UNaB
Materia “Políticas Públicas y Machine Learning”
Diplomatura en Análisis de Datos para el Desarrollo de Políticas
Públicas
Universidad Nacional Guillermo Brown
Docente:
Marianela Sarabia
Las brecha salarial por género son un tema de preocupación persistente en el ámbito laboral y han sido objeto de estudio y debate a lo largo del tiempo. Esta disparidad afecta a diversos sectores, tanto en el ámbito público como en el privado. Es importante destacar que no se limitan a un único sector y tienen un alcance más amplio en la fuerza laboral.
En este contexto, es también esencial comprender que otras brechas salariales pueden existir, como la diferencia salarial entre la Ciudad Autónoma de Buenos Aires (CABA) y la Provincia de Buenos Aires (PBA). Explorar la dispersión geográfica en los salarios podría proveer nueva información a los estudios de brecha salarial de género.
Para abordar estas cuestiones, se utilizarán datos relevantes que incluyen información sobre los trabajadores formales en el Área Metropolitana de Buenos Aires (AMBA) registrados en el Sistema Integrado Previsional Argentino (SIPA), obtenidos del Centro de Estudios para la Producción (CEP-XXI), dependiente del Ministerio de Desarrollo Productivo de la Nación. Estos datos, actualizados hasta octubre de 2021, se utilizarán para identificar y comprender las brechas salariales por género y ubicación geográfica, incluyendo la diferencia salarial entre CABA y PBA. Además, se buscará formular políticas locales que aborden estas disparidades y promuevan la equidad salarial en el ámbito laboral.
Originalmente, se planificó realizar el desarrollo del código en una notebook de Google Colab, configurada para operar con con entorno de ejecución R, para aprovechar las capacidades de configuración del entorno con procesamiento GPU y TPU, ventajoso para tareas de Machine Learning. A medida que se fue avanzando, se encontraron distintas complicaciones para la visualización y manejo de datos, y diferencias para utilizar el mismo código R que en documentos .Rmd. La versión final se realizó en este formato, pero la notebook con los avances está disponible: * Notebook Colab: https://colab.research.google.com/drive/1t3ZnWpRxjZZwSbjvvl7-EwBPdwLk7H_k?ouid=114221880555807114010&usp=drive_link * Documentación sobre uso de GPU y TPU: https://serverguy.com/comparison/cpu-vs-gpu-vs-tpu/ * Documentación sobre uso de GPU y TPU: https://saturncloud.io/blog/how-to-activate-gpu-computing-in-google-colab/ * Documentación sobre uso de R en Colab: https://bookdown.org/yshang/book/ * Documentación sobre uso de R en Colab: https://stackoverflow.com/questions/54595285/how-to-use-r-with-google-colaboratory * Documentación sobre uso de R en Colab: https://colab.research.google.com/github/IRkernel/IRkernel/blob/master/example-notebooks/Display.ipynb
Alta de variables de entorno
# Operar en Colab
COLAB <- FALSE
# Habilitar Análisis Geoespacial (sf)
SIG <- TRUE
# Habilitar Clasificación y Regresión (caret)
ML <- FALSE
# Warnings de Librerías
WARN_ACT <- FALSE
if (COLAB) {
PATH <- "/content/datos/"
} else {
PATH <- "datos/"
}
actividades_csv <- "actividades.csv"
df_a_letra_csv <- "Empleo-AMBA-a-letra.csv"
df_sin_desagregar_csv <- "Empleo-AMBA-sin-desagregar.csv"
df_csv <- "Empleo-AMBA.csv"
jurisdicciones_csv <- "jurisdicciones.csv"
shapes_shp <- "Shape AMBA.shp"Obtención de datos desde repositorio git
# Clonación de datos del repositorio Git
if (!dir.exists(PATH) || length(list.files(PATH)) == 0) {
system("git clone --single-branch --branch datos https://github.com/DiploDatosUNAB/PPyML-TPF-Blasco-Orainde-Diaz.git datos")
}Obtención de tabla Empleo-AMBA desde google drive
# Agregado del archivo Empleo-AMBA.csv a la notebook, que por tamaño no puede ser alojado en github
if (!file.exists(paste0(PATH,df_csv))) {
if (!requireNamespace("googledrive", quietly = TRUE)) {
install.packages("googledrive")
}
library(googledrive)
# URL del archivo compartido en Google Drive
drive_url <- "https://drive.google.com/file/d/1oIgB5CCFFGFjF0PaP1GykQyw0Dfyrd-Y/view?usp=sharing"
drive_id <- sub(".*/d/([^/]+)/.*", "\\1", drive_url)
drive_path <- sprintf("https://drive.google.com/uc?export=download&id=%s", drive_id)
download.file(drive_path, paste0(PATH,df_csv), mode = "wb")
}Instalación condicional de librerías
# instalación condicional de librerías (solo instala si faltan)
# https://stackoverflow.com/questions/66869137/installing-r-packages-in-colab
# https://stackoverflow.com/questions/63594521/install-a-r-package-permanently-in-google-colab
instalar <- function(libreria) {
if (!requireNamespace(libreria, quietly = TRUE)) {
install.packages(libreria)
}
}
instalar("gt")
instalar("gtExtras")
instalar("Hmisc")
instalar("purrr")
instalar("lattice")
instalar("ggplot2")
instalar("readr")
instalar("cluster")
instalar("dplyr")
instalar("stats")
instalar("stringr")
instalar("corrplot")
# demora 30-45 segundos
instalar("psych")
# demora demora 3-8 segundos
instalar("skimr")
# demora 5-7 minutos
if (ML) {
instalar("caret")
}
# demora 7-12 minutos
if (SIG) {
instalar("sf")
}*Carga de librerías**
# Función de carga condicional de librerías (solo carga si están instaladas)
cargar <- function(libreria, warns = WARN_ACT) {
if (requireNamespace(libreria, quietly = TRUE)) {
if(warns) {
library(libreria, character.only = TRUE)
} else{
suppressMessages(library(libreria, character.only = TRUE))
}
}
}
# carga de librerías a utilizar
cargar("lattice") # graficación estadistica
cargar("ggplot2") # graficación
cargar("readr") # lectura de datos
cargar("cluster") # clustering
cargar("dplyr") # manipulación de df
cargar("skimr") # estadísticas
cargar("stats") # estadísticas
# cargar("kableExtra") # tablas
cargar("psych") # estadísticas
cargar("purrr") # manejo de listas
# cargar("IRdisplay") # display de notebook
cargar("tidyverse") # conjunto de paquetes tidy
cargar("stringr") # cadenas de caracteres
cargar("corrplot") # grafico de correlación
cargar("Hmisc") # correlaciones
cargar("gt") # tablas
cargar("gtExtras") # tablas
cargar("caret") # entrenamiento
cargar("sf") # datos geoespacialesEsta tabla contiene información referente a la distribución de los trabajadores en relación de dependencia registrados en el Área Metropolitana de Buenos Aires (AMBA) desagregados por sector de actividad a 2 dígitos.
# Empleo AMBA
df <- read.csv(paste0(PATH, df_csv), sep = ",", encoding = "UTF-8")
sample_n(df, 5) |>
gt() |>
tab_header(
title = "Empleo AMBA*",
subtitle = "* muestra"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Empleo AMBA* | |||||||||||||||
| * muestra | |||||||||||||||
| LINK | provincia_id | departamento_id | clae2 | letra | Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Remuneracion_mediana | Remuneracion_mediana_Hombres | Remuneracion_mediana_Mujeres | Poblacion_radio | Viviendas_radio |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 064275404 | 6 | 6427 | 80 | N | 3 | 3 | NA | 51035.30 | 51035.30 | NA | 66764.00 | 66764.00 | NA | 1202 | 305 |
| 066380402 | 6 | 6638 | 1 | A | 1 | 1 | NA | 78813.31 | 78813.31 | NA | 78813.31 | 78813.31 | NA | 1640 | 451 |
| 7_13_14 | 2 | 2049 | 69 | M | 3 | NA | 3 | 85628.79 | NA | 85628.79 | 40836.38 | NA | 40836.38 | 709 | 256 |
| 064412009 | 6 | 6441 | 94 | S | 2 | NA | 2 | 208186.96 | NA | 208186.96 | 208186.96 | NA | 208186.96 | 539 | 262 |
| 065681609 | 6 | 6568 | 80 | N | 4 | 4 | NA | 70113.06 | 70113.06 | NA | 69969.02 | 69969.02 | NA | 1257 | 423 |
Dimensiones
## El DataFrame tiene 508989 observaciones y 16 variables.
Diccionario
# diccionario de datos
descripciones <- c(
"Identificador del radio censal",
"Indicador de provincia",
"Indicador de departamento",
"Indicador de CLAE a dos dígitos de desagregación",
"Indicador de CLAE a nivel de letra",
"Cantidad de trabajadores en el radio censal para la desagregación de dos dígitos",
"Cantidad de trabajadores hombres en el radio censal para la desagregación de dos dígitos",
"Cantidad de trabajadoras mujeres en el radio censal para la desagregación de dos dígitos",
"Salario medio de los trabajadores del radio censal para cada nivel de desagregación de actividad",
"Salario medio de los trabajadores hombres del radio censal para cada nivel de desagregación de actividad",
"Salario medio de los trabajadoras mujeres del radio censal para cada nivel de desagregación de actividad",
"Salario mediano de los trabajadores del radio censal para cada nivel de desagregación de actividad",
"Salario mediano de los trabajadores hombres del radio censal para cada nivel de desagregación de actividad",
"Salario mediano de los trabajadoras mujeres del radio censal para cada nivel de desagregación de actividad",
"Cantidad de personas que habitan en el radio censal según Censo 2010 (INDEC)",
"Cantidad de viviendas en el radio censal según Censo 2010 (INDEC)"
)
diccionario <- data.frame(
Clase = sapply(df, class),
Descripción = descripciones
)
diccionario <- tibble::rownames_to_column(diccionario, "Variable")
diccionario |>
gt(rowname_col = "Variable") |>
tab_header(
title = "Diccionario de Datos",
) |>
tab_options(table.width = "90%") |>
gt_theme_dot_matrix()| Diccionario de Datos | ||
| Clase | Descripción | |
|---|---|---|
| LINK | character | Identificador del radio censal |
| provincia_id | integer | Indicador de provincia |
| departamento_id | integer | Indicador de departamento |
| clae2 | integer | Indicador de CLAE a dos dígitos de desagregación |
| letra | character | Indicador de CLAE a nivel de letra |
| Cantidad_trabajadores | integer | Cantidad de trabajadores en el radio censal para la desagregación de dos dígitos |
| Cantidad_trabajadores_Hombres | integer | Cantidad de trabajadores hombres en el radio censal para la desagregación de dos dígitos |
| Cantidad_trabajadores_Mujeres | integer | Cantidad de trabajadoras mujeres en el radio censal para la desagregación de dos dígitos |
| Remuneracion_media | numeric | Salario medio de los trabajadores del radio censal para cada nivel de desagregación de actividad |
| Remuneracion_media_Hombres | numeric | Salario medio de los trabajadores hombres del radio censal para cada nivel de desagregación de actividad |
| Remuneracion_media_Mujeres | numeric | Salario medio de los trabajadoras mujeres del radio censal para cada nivel de desagregación de actividad |
| Remuneracion_mediana | numeric | Salario mediano de los trabajadores del radio censal para cada nivel de desagregación de actividad |
| Remuneracion_mediana_Hombres | numeric | Salario mediano de los trabajadores hombres del radio censal para cada nivel de desagregación de actividad |
| Remuneracion_mediana_Mujeres | numeric | Salario mediano de los trabajadoras mujeres del radio censal para cada nivel de desagregación de actividad |
| Poblacion_radio | integer | Cantidad de personas que habitan en el radio censal según Censo 2010 (INDEC) |
| Viviendas_radio | integer | Cantidad de viviendas en el radio censal según Censo 2010 (INDEC) |
Carga de la df
# Empleo AMBA a letra
df_a_letra <- read.csv(paste0(PATH, df_a_letra_csv), sep = ",", encoding = "UTF-8")
empleo_tipo <- df_a_letra
sample_n(df_a_letra, 5) |>
gt() |>
tab_header(
title = "Empleo AMBA - Redución a Letra*",
subtitle = "* muestra"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Empleo AMBA - Redución a Letra* | ||||||||||||||
| * muestra | ||||||||||||||
| LINK | provincia_id | departamento_id | letra | Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Remuneracion_mediana | Remuneracion_mediana_Hombres | Remuneracion_mediana_Mujeres | Poblacion_radio | Viviendas_radio |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 064415712 | 6 | 6441 | H | 2 | 2 | NA | 136001.09 | 136001.09 | NA | 136001.09 | 136001.09 | NA | 1055 | 344 |
| 065391002 | 6 | 6539 | M | 2 | 2 | NA | 39559.90 | 39559.90 | NA | 39559.90 | 39559.90 | NA | 1520 | 381 |
| 6_7_3 | 2 | 2042 | G | 24 | 11 | 13 | 105093.76 | 127264.14 | 86334.20 | 75593.91 | 90000.00 | 74795.61 | 954 | 336 |
| 067491105 | 6 | 6749 | I | 6 | 3 | 3 | 39588.77 | 50965.92 | 28211.61 | 38309.56 | 74725.12 | 28124.16 | 986 | 289 |
| 064412205 | 6 | 6441 | C | 4 | 3 | 1 | 152187.77 | 175202.03 | 83145.00 | 115976.71 | 135516.71 | 83145.00 | 801 | 300 |
Dimensiones
# dimensiones
cat("El DataFrame tiene", dim(df_a_letra)[1], "observaciones y", dim(df_a_letra)[2], "variables.")## El DataFrame tiene 209544 observaciones y 15 variables.
Variables
# lista de variables
attr(df_a_letra, "names") |>
data.frame() |>
gt() |>
tab_header(
title = "Empleo AMBA - Reducción a Letra",
subtitle = "Lista de variables"
) |>
cols_label(
attr.df_a_letra...names.. = ""
) |>
tab_options(table.width = "50%") |>
gt_theme_dot_matrix()| Empleo AMBA - Reducción a Letra |
| Lista de variables |
| LINK |
| provincia_id |
| departamento_id |
| letra |
| Cantidad_trabajadores |
| Cantidad_trabajadores_Hombres |
| Cantidad_trabajadores_Mujeres |
| Remuneracion_media |
| Remuneracion_media_Hombres |
| Remuneracion_media_Mujeres |
| Remuneracion_mediana |
| Remuneracion_mediana_Hombres |
| Remuneracion_mediana_Mujeres |
| Poblacion_radio |
| Viviendas_radio |
Esta tabla posee la misma información que la principal, pero los datos de distintos CLAE dentro de una categoría de actividad fueron unificados, con lo que está ausente la variable CLAE2.
Carga de la df
# Empleo AMBA sin desagregar
df_sin_desagregar <- read.csv(paste0(PATH, df_sin_desagregar_csv), sep = ",", encoding = "UTF-8")
empleo <- df_sin_desagregar
sample_n(df_sin_desagregar, 5) |>
gt() |>
tab_header(
title = "Empleo AMBA - Sin Desagregar*",
subtitle = "* muestra"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Empleo AMBA - Sin Desagregar* | |||||||||||||
| * muestra | |||||||||||||
| LINK | provincia_id | departamento_id | Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Remuneracion_mediana | Remuneracion_mediana_Hombres | Remuneracion_mediana_Mujeres | Poblacion_radio | Viviendas_radio |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 5_2_11 | 2 | 2035 | 339 | 163 | 175 | 130378.65 | 136395.68 | 125254.92 | 96473.41 | 100344.28 | 91926.18 | 841 | 486 |
| 065392203 | 6 | 6539 | 169 | 92 | 77 | 92792.03 | 93532.71 | 91907.07 | 86954.33 | 83434.93 | 87231.46 | 1513 | 448 |
| 13_25_3 | 2 | 2091 | 171 | 104 | 67 | 147392.27 | 158275.61 | 130498.72 | 107770.32 | 114242.55 | 101202.56 | 875 | 477 |
| 068612007 | 6 | 6861 | 137 | 61 | 76 | 166456.35 | 211263.63 | 130492.61 | 117982.20 | 163827.90 | 102907.46 | 790 | 306 |
| 067601201 | 6 | 6760 | 152 | 91 | 61 | 113784.02 | 124868.48 | 97248.18 | 96047.38 | 101844.44 | 84644.25 | 753 | 216 |
Dimensiones
# dimensiones
cat("El DataFrame tiene", dim(df_sin_desagregar)[1], "observaciones y", dim(df_sin_desagregar)[2], "variables.")## El DataFrame tiene 13882 observaciones y 14 variables.
Lista de variables
# lista de variables
attr(df_sin_desagregar, "names") |>
data.frame() |>
gt() |>
tab_header(
title = "Empleo AMBA - Sin Desagregar",
subtitle = "Lista de variables"
) |>
cols_label(
attr.df_sin_desagregar...names.. = ""
) |>
tab_options(table.width = "50%") |>
gt_theme_dot_matrix()| Empleo AMBA - Sin Desagregar |
| Lista de variables |
| LINK |
| provincia_id |
| departamento_id |
| Cantidad_trabajadores |
| Cantidad_trabajadores_Hombres |
| Cantidad_trabajadores_Mujeres |
| Remuneracion_media |
| Remuneracion_media_Hombres |
| Remuneracion_media_Mujeres |
| Remuneracion_mediana |
| Remuneracion_mediana_Hombres |
| Remuneracion_mediana_Mujeres |
| Poblacion_radio |
| Viviendas_radio |
Esta tabla posee la misma información que la principal, pero sin desagregar por nomenclador de actividades.
Tabla con la descripción de las actividades correspondientes a las
variables letra y CLAE2 de las anteriores
df.
Carga de la df
actividades <- read.csv(paste0(PATH, actividades_csv), sep = ",", encoding = "UTF-8")
# write.csv2(actividades, "datos/Auxiliar/actividades2.csv", row.names = FALSE, fileEncoding = "latin1")Dimensiones
cat("El DataFrame tiene", dim(actividades)[1], "observaciones y", dim(actividades)[2], "variables.")## El DataFrame tiene 89 observaciones y 4 variables.
Nomenclador
# Cuadro de actividades x letra y clae
actividades |>
select(letra,letra_desc,clae2,clae2_desc) |>
gt(groupname_col = c("letra","letra_desc")) |>
tab_header(
title = "Actividades CLAE*",
subtitle = "* Clasificación de Actividades Económicas"
) |>
cols_label(
clae2 = "CLAE",
clae2_desc = "Descripción"
) |>
tab_options(table.width = "85%") |>
opt_stylize(style = 5, color = 'cyan')| Actividades CLAE* | |
| * Clasificación de Actividades Económicas | |
| CLAE | Descripción |
|---|---|
| 0 - sin asignar | |
| 0 | sin asignar |
| A - AGRICULTURA, GANADERÍA, CAZA, SILVICULTURA Y PESCA | |
| 1 | Agricultura, ganadería, caza y servicios relacionados |
| 2 | Silvicultura y explotación forestal |
| 3 | Pesca y acuicultura |
| B - EXPLOTACION DE MINAS Y CANTERAS | |
| 5 | Extracción de carbón y lignito |
| 6 | Extracción de petróleo crudo y gas natural |
| 7 | Extracción de minerales metálicos |
| 8 | Extracción de otros minerales |
| 9 | Actividades de apoyo al petróleo y la minería |
| C - INDUSTRIA MANUFACTURERA | |
| 10 | Elaboración de productos alimenticios |
| 11 | Elaboración de bebidas |
| 12 | Elaboración de productos de tabaco |
| 13 | Elaboración de productos textiles |
| 14 | Elaboración de prendas de vestir |
| 15 | Elaboración de productos de cuero y calzado |
| 16 | Elaboración de productos de madera |
| 17 | Elaboración de productos de papel |
| 18 | Imprentas y editoriales |
| 19 | Fabricación de productos de refinación de petróleo |
| 20 | Fabricación de sustancias químicas |
| 21 | Elaboracion de productos farmacéuticos |
| 22 | Fabricación de productos de caucho y vidrio |
| 23 | Fabricación de productos de vidrio y otros minerales no metálicos |
| 24 | Fabricación de metales comunes |
| 25 | Fabricación de productos elaborados del metal, excepto maquinaria y equipo |
| 26 | Fabricación de productos de informática, de electrónica y de óptica |
| 27 | Fabricación de equipo eléctrico |
| 28 | Fabricación de maquinarias |
| 29 | Fabricación de vehículos automotores, remolques y semirremolques |
| 30 | Fabricación de otros equipos de transporte |
| 31 | Fabricación de muebles |
| 32 | Otras industrias manufactureras |
| 33 | Reparación e instalación de maquinaria y equipo |
| D - SUMINISTRO DE ELECTRICIDAD, GAS, VAPOR Y AIRE ACONDICIONADO | |
| 35 | Suministro de electricidad, gas, vapor y aire acondicionado |
| E - SUMINISTRO DE AGUA; CLOACAS; GESTIÓN DE RESIDUOS Y RECUPERACIÓN DE MATERIALES Y SANEAMIENTO PUBLICO | |
| 36 | Captación, tratamiento y distribución de agua |
| 37 | Evacuación de aguas residuales |
| 38 | Recogida, tratamiento y eliminación de desechos; recuperación de materiales |
| 39 | Descontaminación y otros servicios |
| F - CONSTRUCCIÓN | |
| 41 | Construcción de edificios y partes |
| 42 | Obras de ingeniería civil |
| 43 | Actividades especializadas de construcción |
| G - COMERCIO AL POR MAYOR Y AL POR MENOR; REPARACIÓN DE VEHÍCULOS AUTOMOTORES Y MOTOCICLETAS | |
| 45 | Comercio al por mayor y al por menor y reparación de vehículos automotores y motos |
| 46 | Comercio al por mayor excepto autos y motos |
| 47 | Comercio al por menor excepto autos y motos |
| H - SERVICIO DE TRANSPORTE Y ALMACENAMIENTO | |
| 49 | Transporte terrestre y por tuberías |
| 50 | Transporte acuático |
| 51 | Transporte aéreo |
| 52 | Almacenamiento y actividades de apoyo al transporte |
| 53 | Servicio de correo y mensajería |
| I - SERVICIOS DE ALOJAMIENTO Y SERVICIOS DE COMIDA | |
| 55 | Servicios de alojamiento |
| 56 | Servicios de expendio de alimentos y bebidas |
| J - INFORMACIÓN Y COMUNICACIONES | |
| 58 | Edición |
| 59 | Servicios audiovisuales |
| 60 | Programación y transmisiones de TV y radio |
| 61 | Telecomunicaciones |
| 62 | Servicios de programación, consultoría informática y actividades conexas |
| 63 | Actividades de procesamiento de información |
| K - INTERMEDIACIÓN FINANCIERA Y SERVICIOS DE SEGUROS | |
| 64 | Servicios financieros (excepto seguros y pensiones) |
| 65 | Servicios de seguros, reaseguros y pensiones |
| 66 | Servicios auxiliares de la actividad financiera y de seguros |
| L - SERVICIOS INMOBILIARIOS | |
| 68 | Servicios inmobiliarios |
| M - SERVICIOS PROFESIONALES, CIENTÍFICOS Y TÉCNICOS | |
| 69 | Servicios jurídicos y de contabilidad |
| 70 | Servicios y asesoramiento de dirección y gestión empresarial |
| 71 | Servicios de arquitectura e ingeniería |
| 72 | Investigación y desarrollo científico |
| 73 | Servicios de publicidad e investigación de mercado |
| 74 | Otras actividades profesionales, científicas y técnicas |
| 75 | Servicios veterinarios |
| N - ACTIVIDADES ADMINISTRATIVAS Y SERVICIOS DE APOYO | |
| 77 | Alquiler y arrendamiento |
| 78 | Servicios de obtención y dotación de personal |
| 79 | Agencias de viajes, servicios de reservas y actividades conexas |
| 80 | Actividades de investigación y seguridad |
| 81 | Servicios a edificios y actividades de jardinería |
| 82 | Actividades administrativas y de apoyo a oficinas y empresas |
| O - ADMINISTRACION PUBLICA, DEFENSA Y SEGURIDAD SOCIAL OBLIGATORIA | |
| 84 | Administración pública, defensa y seguridad social |
| P - ENSEÑANZA | |
| 85 | Enseñanza |
| Q - SALUD HUMANA Y SERVICIOS SOCIALES | |
| 86 | Servicios de salud humana |
| 87 | Actividades de atención en instituciones |
| 88 | Actividades de atención sin alojamiento |
| R - SERVICIOS ARTÍSTICOS, CULTURALES, DEPORTIVOS Y DE ESPARCIMIENTO | |
| 90 | Servicios artísticos y de espectáculos |
| 91 | Servicios de bibliotecas, archivos y museos y servicios culturales n.c.p. |
| 92 | Juegos de azar y apuestas |
| 93 | Actividades deportivas, recreativas y de entretenimiento |
| S - SERVICIOS DE ASOCIACIONES Y SERVICIOS PERSONALES | |
| 94 | Servicios de asociaciones |
| 95 | Reparación de computadoras y equipos de uso doméstico |
| 96 | Otros servicios personales |
| T - SERVICIOS DE HOGARES PRIVADOS QUE CONTRATAN SERVICIO DOMESTICO | |
| 97 | Actividades de empleo doméstico |
| U - SERVICIOS DE ORGANIZACIONES Y ÓRGANOS EXTRATERRITORIALES | |
| 99 | Actividades de organismos extraterritoriales |
| - | |
| NA | |
Tabla con la descripción de las jurisdicciones correspondientes a las
variables provincia_id y departamento_id de
las anteriores df.
Carga de la df
jurisdicciones <- read.csv(paste0(PATH, jurisdicciones_csv), sep = ",", encoding = "UTF-8")
sample_n(jurisdicciones,5) |>
gt() |>
tab_header(
title = "Jurisdicciones*",
subtitle = "* muestra"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Jurisdicciones* | |||
| * muestra | |||
| provincia_id | provincia | departamento_id | departamento |
|---|---|---|---|
| 6 | PBA | 6091 | Berazategui |
| 2 | CABA | 2035 | Comuna 5 |
| 6 | PBA | 6329 | General Las Heras |
| 2 | CABA | 2021 | Comuna 3 |
| 2 | CABA | 2105 | Comuna 15 |
Dimensiones
cat("El DataFrame tiene", dim(jurisdicciones)[1], "observaciones y", dim(jurisdicciones)[2], "variables.")## El DataFrame tiene 53 observaciones y 4 variables.
# Listado de departamentos
departamentos <- unique(jurisdicciones$departamento)
departamentos <- c(departamentos, rep("", 3))
fragmentos <- split(departamentos, ceiling(seq_along(departamentos) / 4))
df_elementos <- data.frame(matrix(unlist(fragmentos), ncol = 4, byrow = TRUE))
df_elementos |>
gt() |>
tab_header(
title = "Lista de jurisdicciones",
) |>
cols_label(
X1 = "",
X2 = "",
X3 = "",
X4 = ""
) |>
tab_options(table.width = "80%") |>
opt_stylize(style = 5, color = 'cyan')| Lista de jurisdicciones | |||
| Comuna 1 | Comuna 2 | Comuna 3 | Comuna 4 |
| Comuna 5 | Comuna 6 | Comuna 7 | Comuna 8 |
| Comuna 9 | Comuna 10 | Comuna 11 | Comuna 12 |
| Comuna 13 | Comuna 14 | Comuna 15 | Almirante Brown |
| Avellaneda | Berazategui | Berisso | Brandsen |
| Campana | Cañuelas | Ensenada | Escobar |
| Esteban Echeverría | Ezeiza | Florencio Varela | General Las Heras |
| General Rodríguez | General San Martín | Hurlingham | Ituzaingó |
| José C. Paz | La Matanza | Lanús | La Plata |
| Lomas de Zamora | Luján | Malvinas Argentinas | Marcos Paz |
| Merlo | Moreno | Morón | Pilar |
| Presidente Perón | Quilmes | San Fernando | San Isidro |
| San Miguel | San Vicente | Tigre | Tres de Febrero |
| Vicente López | |||
Como información complementaria, el dataset posee una tabla con las geometrías de los distintos radios censales, a fin de poder realizar graficaciones.
Lectura de la df
# lectura de los polígonos de radios censales
if (SIG) {
radios_censales <- sf::st_read(paste0(PATH, shapes_shp))
}## Reading layer `Shape AMBA' from data source
## `F:\DocsAle\Diplomaturas\AdD y PP\04-Políticas Públicas y Machine Learning\proyecto_ machine_learning\datos\Shape AMBA.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 15123 features and 1 field
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -59.37685 ymin: -35.42203 xmax: -57.70947 ymax: -33.80567
## Geodetic CRS: WGS 84
if (SIG) {
sample_n(radios_censales, 2) |>
gt() |>
tab_header(title = "Radios Censales* - GeoDataFrame",
subtitle = "* muestra"
) |>
cols_label(
CO_FRAC_RA = "Radio Censal",
geometry = "Geometría"
) |>
tab_options(table.width = "90%") |>
gt_theme_pff()
}| Radios Censales* - GeoDataFrame | |
| * muestra | |
| Radio Censal | Geometría |
|---|---|
| 064278704 | list(list(c(-58.6177876555659, -58.6174814901635, -58.6173658778975, -58.6173452401309, -58.616094275996, -58.6148545030254, -58.6141793257333, -58.614047226646, -58.6133941817076, -58.6124861859683, -58.6125502008053, -58.6116757050363, -58.6116535618921, -58.6126014552704, -58.6131830335919, -58.6137321576374, -58.614324670419, -58.6148736568073, -58.6160913697195, -58.6155314614251, -58.616660726557, -58.6178008875979, -58.6188967412283, -58.618706329206, -58.6185586993302, -58.6184109203577, -58.6180939757349, -58.6177876555659, -34.7664051468001, -34.7657707421602, -34.7654990314161, -34.7654266909593, -34.7664309742383, -34.7674173449612, -34.7679504555914, -34.7680120444336, -34.7685273760192, -34.7692651293896, -34.7693559914859, -34.7700490541128, -34.7700668280549, -34.7708617875154, -34.7713551298567, -34.7718300733806, -34.7723235348829, -34.7728074850197, -34.7718388916114, -34.7713548226686, -34.7704483097511, -34.7695419096391, -34.768671048748, -34.7682993448268, -34.767982205646, -34.7676740778482, -34.7670305391655, -34.7664051468001))) |
| 066381713 | list(list(c(-58.9090306712934, -58.9079993363171, -58.9073855419527, -58.9072529773444, -58.9063876900507, -58.9063544604656, -58.9061464347264, -58.9059174112733, -58.905689387115, -58.9055921665322, -58.9054950636857, -58.9053664952159, -58.9053037991211, -58.9053498504731, -58.9053720821429, -58.9044967575326, -58.903124241358, -58.9018166771636, -58.9011354938458, -58.9004379155956, -58.8996680012891, -58.8989146847371, -58.8991318281366, -58.9006730088165, -58.9010853604731, -58.9011397649429, -58.9021066309826, -58.902541277913, -58.9028672339969, -58.9034212776017, -58.9037526750653, -58.9045239274118, -58.9046543812563, -58.9058168221815, -58.9062514740533, -58.9066533659694, -58.9069361546472, -58.9074125503715, -58.9082372577915, -58.9085140276187, -58.9087629483717, -58.9088957444196, -58.9094266302134, -58.9090306712934, -34.4538345570553, -34.4544833742504, -34.4552395767751, -34.4553916306357, -34.4549872745747, -34.4550320475253, -34.4551293407609, -34.4551678544075, -34.4551297571789, -34.4550748025533, -34.4550108348596, -34.4548564448747, -34.4546575744326, -34.4544641848199, -34.4544283277084, -34.4539607701871, -34.4532363530321, -34.4525395462563, -34.4534528575565, -34.454370524329, -34.4554092252653, -34.4564255354001, -34.4564635472786, -34.4567748803129, -34.4568642213338, -34.4568647104078, -34.4569905806107, -34.4570395538058, -34.4570785359394, -34.4571511126726, -34.4571901412652, -34.457296209901, -34.457306392965, -34.4574565213412, -34.4575054814261, -34.4575631610015, -34.4575747040751, -34.4569254448471, -34.4558511277195, -34.4554885303346, -34.4551752609487, -34.4550051793804, -34.4543473840292, -34.4538345570553))) |
PBA
# graficación de radios censales
if (SIG) {
ggplot() +
geom_sf(data = subset(radios_censales, !grepl("_", CO_FRAC_RA))) +
labs(title = "Radios Censales en Área Metropolitana de Buenos Aires")
}Radios CABA
# Graficación de radios censales
if (SIG) {
ggplot() +
geom_sf(data = radios_caba) +
labs(title = "Radios Censales en Ciudad Autónoma de Buenos Aires")
}
Dimensiones
cat("El DataFrame muestra que existen", dim(subset(radios_censales, grepl("_", CO_FRAC_RA)))[1], "radios censales para el territorio de CABA y y", dim(subset(radios_censales, !grepl("_", CO_FRAC_RA)))[1], "para la fracción de PBA incluida en AMBA")## El DataFrame muestra que existen 3554 radios censales para el territorio de CABA y y 11569 para la fracción de PBA incluida en AMBA
Debido a que algunas operaciones de Machine Learning superaban los umbrales de memoria y procesamiento disponibles, y otros arrojaban errores y advertencias, las alternativas para procesar la base son 2: 1. Seleccionar un subset de en base a alguna de sus características, como una localidad. 2. Unificar los datos de diferentes radios censales correspondientes a cada departamento.
Se opta por la segunda vía.
Para realizar esta agrupación, se deben realizar los siguientes
pasos: 1. Obtener los datos de Población y Viviendas para cada
departamento 2. Calcular las remuneraciones totales de cada registro
(Remuneracion_media * Cantidad_trabajadores)
3. Agrupar por radio censal(para obtener un único valor de
Poblacion_radio y Viviendas_radio ) 4. Añadir
los datos de población y vivienda obtenidos en 1)
Cantidad de registros por departamento
# Cantidad de registros por departamento
registros_depto <- as.data.frame(table(df$departamento_id))
colnames(registros_depto) <- c("departamento_id", "registros")
registros_depto |>
arrange(registros) |>
head(10) |>
gt() |>
tab_header(
title = "Radios Censales por Departamento*",
subtitle = "* muestra de los deparamentos con menos radios censales"
) |>
tab_options(table.width = "60%") |>
gt_theme_538()| Radios Censales por Departamento* | |
| * muestra de los deparamentos con menos radios censales | |
| departamento_id | registros |
|---|---|
| 6329 | 367 |
| 6119 | 615 |
| 6245 | 945 |
| 6525 | 992 |
| 6134 | 1545 |
| 6098 | 1709 |
| 6778 | 1765 |
| 6364 | 2126 |
| 6648 | 2302 |
| 6270 | 4060 |
Almacén de tablas auxiliares para verificación manual
if (!file.exists("datos/Auxiliar/df_gral_las_heras_6329.csv")) {
if (!dir.exists("datos/Auxiliar")) {
dir.create("datos/Auxiliar", recursive = TRUE)
}
df_6329 <- df[df$departamento_id == 6329, ]
write.csv2(df_6329, "datos/Auxiliar/df_gral_las_heras_6329.csv", row.names = FALSE)
}
if (!file.exists("datos/Auxiliar/df_6329_x_dep.csv")) {
df_sdxdep_6329 <- df_sin_des_x_dep[df_sin_des_x_dep$departamento_id == 6329, ]
write.csv2(df_6329, "datos/Auxiliar/df_6329_x_dep.csv", row.names = FALSE)
}Para analizar los resultados, se visualizarán los datos del
departamento con menos radios censales, General las Heras
(departamento_id = 6329).
# eliminar advertencias de agrupación
options(dplyr.summarise.inform = FALSE)
# Obtener datos de poblacion y viviendas x radio
# datos_radio <- df |>
# distinct(LINK, provincia_id, departamento_id, Poblacion_radio, Viviendas_radio)
# write.csv2(datos_radio[datos_radio$departamento_id == 6329, ], "datos/datos_radio.csv", row.names = FALSE)
# Obtener datos de poblacion y viviendas x departamento
datos_depto <- df |>
distinct(LINK, provincia_id, departamento_id, Poblacion_radio, Viviendas_radio) |>
group_by(provincia_id, departamento_id) |>
summarise(
Poblacion_depto = sum(Poblacion_radio),
Viviendas_depto = sum(Viviendas_radio)
)
datos_depto[datos_depto$departamento_id == 6329, ] |>
ungroup() |>
gt() |>
tab_header(
title = "Población y Vivienda por Departamento*",
subtitle = "* muestra sobre el departamento General Las Heras"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Población y Vivienda por Departamento* | |||
| * muestra sobre el departamento General Las Heras | |||
| provincia_id | departamento_id | Poblacion_depto | Viviendas_depto |
|---|---|---|---|
| 6 | 6329 | 11550 | 3616 |
# generar columnas de remuneración total
# agrupar por provincia y departamento
# dividir remuneración total por cantidad de trabajadores para obtener media departamental
# no se pudo realizar lo mismo para la mediana
df_x_depto <- df |>
mutate(
Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
) |>
group_by(provincia_id, departamento_id, clae2, letra) |>
summarise(
Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE)
)
df_x_depto[(df_x_depto$departamento_id == 6329) & (df_x_depto$clae2 == 1), ] |>
ungroup() |>
gt() |>
tab_header(
title = "Trabajadores y Remuneración Media por Departamento*",
subtitle = "* muestra sobre el departamento General Las Heras"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Trabajadores y Remuneración Media por Departamento* | |||||||||
| * muestra sobre el departamento General Las Heras | |||||||||
| provincia_id | departamento_id | clae2 | letra | Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres |
|---|---|---|---|---|---|---|---|---|---|
| 6 | 6329 | 1 | A | 70 | 64 | 6 | 68085.28 | 68898.7 | 59408.86 |
# añadir columnas poblacion y viviendas
df_x_depto <- df_x_depto |>
left_join(datos_depto, by = c("provincia_id", "departamento_id"))
df_x_depto[(df_x_depto$departamento_id == 6329) & (df_x_depto$clae2 == 1), ] |>
ungroup() |>
gt() |>
tab_header(
title = "Union de Tablas",
subtitle = "* muestra sobre el departamento General Las Heras y actividad A1"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Union de Tablas | |||||||||||
| * muestra sobre el departamento General Las Heras y actividad A1 | |||||||||||
| provincia_id | departamento_id | clae2 | letra | Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Poblacion_depto | Viviendas_depto |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 6 | 6329 | 1 | A | 70 | 64 | 6 | 68085.28 | 68898.7 | 59408.86 | 11550 | 3616 |
Dimensiones
# dimensiones
cat("El DataFrame tiene", dim(df_x_depto)[1], "observaciones y", dim(df_x_depto)[2], "variables.")## El DataFrame tiene 4286 observaciones y 12 variables.
Se realiza idéntico procedimiento para esta tabla.
# Idéntico prodecimiento para la tabla "a letra"
df_x_letra_y_depto <- df_a_letra |>
mutate(
Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
) |>
group_by(provincia_id, departamento_id, letra) |>
summarise(
Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE)
)
# df_x_depto[(df_x_depto$departamento_id == 6329) & (df_x_depto$clae2 == 1), ]
# añadir columnas poblacion y viviendas
df_x_letra_y_depto <- df_x_letra_y_depto |>
left_join(datos_depto, by = c("provincia_id", "departamento_id"))
df_x_letra_y_depto[df_x_letra_y_depto$departamento_id == 6329, ] |>
ungroup() |>
gt() |>
tab_header(
title = "Empleo AMBA - Reducción a Letra y Jurisdicción*",
subtitle = "* muestra sobre el departamento General Las Heras"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Empleo AMBA - Reducción a Letra y Jurisdicción* | ||||||||||
| * muestra sobre el departamento General Las Heras | ||||||||||
| provincia_id | departamento_id | letra | Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Poblacion_depto | Viviendas_depto |
|---|---|---|---|---|---|---|---|---|---|---|
| 6 | 6329 | A | 70 | 64 | 6 | 68085.28 | 68898.70 | 59408.86 | 11550 | 3616 |
| 6 | 6329 | B | 2 | 1 | 1 | 458873.91 | 540003.46 | 377744.36 | 11550 | 3616 |
| 6 | 6329 | C | 587 | 511 | 76 | 102834.25 | 102475.59 | 105245.80 | 11550 | 3616 |
| 6 | 6329 | D | 16 | 13 | 3 | 157079.29 | 158866.27 | 149335.69 | 11550 | 3616 |
| 6 | 6329 | E | 5 | 5 | 0 | 168488.33 | 168488.33 | NaN | 11550 | 3616 |
| 6 | 6329 | F | 49 | 47 | 2 | 77762.73 | 75660.12 | 127174.11 | 11550 | 3616 |
| 6 | 6329 | G | 110 | 74 | 36 | 96469.81 | 114601.23 | 59199.66 | 11550 | 3616 |
| 6 | 6329 | H | 83 | 73 | 10 | 136781.35 | 143145.91 | 90320.12 | 11550 | 3616 |
| 6 | 6329 | I | 9 | 4 | 5 | 38468.91 | 60691.24 | 20691.05 | 11550 | 3616 |
| 6 | 6329 | J | 19 | 13 | 6 | 123972.63 | 143949.58 | 80689.22 | 11550 | 3616 |
| 6 | 6329 | K | 40 | 22 | 18 | 224067.79 | 210341.74 | 240844.07 | 11550 | 3616 |
| 6 | 6329 | L | 9 | 8 | 1 | 70895.82 | 70169.80 | 76703.95 | 11550 | 3616 |
| 6 | 6329 | M | 16 | 5 | 11 | 77230.82 | 70159.35 | 80445.12 | 11550 | 3616 |
| 6 | 6329 | N | 38 | 25 | 13 | 65115.28 | 71926.62 | 52016.55 | 11550 | 3616 |
| 6 | 6329 | O | 723 | 249 | 474 | 75463.16 | 72433.96 | 77054.45 | 11550 | 3616 |
| 6 | 6329 | P | 306 | 52 | 254 | 125554.98 | 147088.04 | 121146.64 | 11550 | 3616 |
| 6 | 6329 | Q | 34 | 6 | 28 | 109686.77 | 165294.52 | 97770.82 | 11550 | 3616 |
| 6 | 6329 | R | 3 | 1 | 2 | 63113.59 | 113857.88 | 37741.44 | 11550 | 3616 |
| 6 | 6329 | S | 39 | 23 | 16 | 123842.60 | 127926.71 | 117971.68 | 11550 | 3616 |
Dimensiones
# dimensiones
cat("El DataFrame tiene", dim(df_x_letra_y_depto)[1], "observaciones y", dim(df_x_letra_y_depto)[2], "variables.")## El DataFrame tiene 1061 observaciones y 11 variables.
El procedimiento en este caso es más sencillo ya que existe 1 solo dato por radio censal, al no existir desagregaciones por categoría.
# realiza la misma operación para la tabla no desagregada por actividad
df_sin_des_x_dep <- df_sin_desagregar |>
mutate(
Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
) |>
group_by(provincia_id, departamento_id) |>
summarise(
Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Poblacion_depto = sum(Poblacion_radio, na.rm = TRUE),
Viviendas_depto = sum(Viviendas_radio, na.rm = TRUE)
)
sample_n(df_sin_des_x_dep,5) |>
ungroup() |>
gt() |>
tab_header(
title = "Empleo AMBA - Sin Desagregar por Departamento",
subtitle = "* muestra"
) |>
tab_options(table.width = "75%") |>
gt_theme_538()| Empleo AMBA - Sin Desagregar por Departamento | |||||||||
| * muestra | |||||||||
| provincia_id | departamento_id | Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Poblacion_depto | Viviendas_depto |
|---|---|---|---|---|---|---|---|---|---|
| 2 | 2098 | 78990 | 41068 | 37750 | 189886.40 | 216297.5 | 160995.87 | 224320 | 140376 |
| 2 | 2014 | 55003 | 28115 | 26791 | 195681.88 | 227482.8 | 162043.88 | 157932 | 108136 |
| 2 | 2035 | 60000 | 30576 | 29328 | 138821.04 | 150301.4 | 127086.50 | 178452 | 92582 |
| 2 | 2084 | 67034 | 34564 | 32393 | 158720.45 | 179484.5 | 136705.56 | 200116 | 93502 |
| 2 | 2056 | 31920 | 18467 | 13438 | 103260.21 | 105485.6 | 100271.22 | 158184 | 47595 |
| 6 | 6749 | 16910 | 9475 | 7425 | 116108.09 | 126903.8 | 102425.48 | 155795 | 47223 |
| 6 | 6091 | 31008 | 18725 | 12271 | 105001.21 | 112470.7 | 93650.09 | 315441 | 91126 |
| 6 | 6760 | 29663 | 17614 | 12039 | 116538.07 | 125970.4 | 102780.93 | 274599 | 80150 |
| 6 | 6270 | 17209 | 11198 | 6000 | 101750.65 | 105790.5 | 94333.89 | 162305 | 44051 |
| 6 | 6329 | 2158 | 1196 | 962 | 98664.89 | 101917.2 | 94621.51 | 11550 | 3616 |
Dimensiones
# dimensiones
cat("El DataFrame tiene", dim(df_sin_des_x_dep)[1], "observaciones y", dim(df_sin_des_x_dep)[2], "variables.")## El DataFrame tiene 51 observaciones y 10 variables.
# Cantidad de departamentos de df
cat("Cantidad de departamentos de la df:", length(unique(df$departamento_id)))## Cantidad de departamentos de la df: 51
cat("Cantidad de departamentos de la tabla jurisdicciones:", length(unique(jurisdicciones$departamento_id)))## Cantidad de departamentos de la tabla jurisdicciones: 53
Se observa que existen 2 jurisdicciones no representadas en el relevamiento del dataset.
deptos_omitidos <- setdiff(unique(jurisdicciones$departamento_id), unique(df$departamento_id))
jurisdicciones |>
filter(departamento_id %in% deptos_omitidos) |>
data.frame() |>
gt() |>
tab_header(
title = "Departamentos sin Registros",
) |>
tab_options(table.width = "65%") |>
gt_theme_538()| Departamentos sin Registros | |||
| provincia_id | provincia | departamento_id | departamento |
|---|---|---|---|
| 6 | PBA | 6126 | Campana |
| 6 | PBA | 6497 | Luján |
Se pretende unificar, de forma análoga a lo realizado con el dataset, a los polígonos de radios censales para crear polígonos por departamento.
# df con datos de radios censales, departamento y provincia
radio_depto <- df_sin_desagregar[, c("LINK", "provincia_id", "departamento_id")]
sample_n(radio_depto,5) |>
gt() |>
tab_header(
title = "Lista de Radios Censales*",
subtitle = "* muestra",
) |>
tab_options(table.width = "50%") |>
gt_theme_538()| Lista de Radios Censales* | ||
| * muestra | ||
| LINK | provincia_id | departamento_id |
|---|---|---|
| 6_1_5 | 2 | 2042 |
| 1_23_2 | 2 | 2007 |
| 064274109 | 6 | 6427 |
| 11_11_5 | 2 | 2077 |
| 12_22_3 | 2 | 2084 |
# Realizar un left join entre radios censales y radio_depto
radios_censales_con_depto <- merge(radios_censales, radio_depto, by.x = "CO_FRAC_RA", by.y = "LINK", all.x = TRUE)
sample_n(radios_censales_con_depto,2) |>
gt() |>
tab_header(
title = "Radios Censales + Geometrías",
subtitle = "* muestra",
) |>
cols_label(
CO_FRAC_RA = "Radio Censal",
geometry = "Geometría"
) |>
tab_options(table.width = "90%") |>
gt_theme_pff()| Radios Censales + Geometrías | |||
| * muestra | |||
| Radio Censal | provincia_id | departamento_id | Geometría |
|---|---|---|---|
| 066382301 | 6 | 6638 | list(list(c(-58.8765589202287, -58.8758345564709, -58.8738726153358, -58.8732533437423, -58.872776178283, -58.8722727014635, -58.8720331410332, -58.8718556948018, -58.8713842533305, -58.8710228766807, -58.870187144565, -58.8698489842328, -58.869448209824, -58.8701453099559, -58.8708586848666, -58.8715611802628, -58.8729565780558, -58.8744063697498, -58.8751361729241, -58.8759567068989, -58.8767659701791, -58.8775086281185, -58.878905236773, -58.8795425615539, -58.8787798899082, -58.8773103230468, -58.8765589202287, -34.4924493321391, -34.4920730971994, -34.4910319457765, -34.4917473532536, -34.4924189987485, -34.493022794714, -34.4934307182593, -34.4936724566935, -34.4943216142881, -34.4948816475142, -34.4959015123097, -34.4963535890894, -34.4970078992652, -34.4973884267788, -34.4977736077455, -34.4981586841021, -34.4988340898785, -34.4995144880091, -34.4998952886366, -34.498789618039, -34.4977108797512, -34.4967261703109, -34.49487310442, -34.4940271314936, -34.4936640834665, -34.4928393322276, -34.4924493321391))) |
| 064100514 | 6 | 6410 | list(list(c(-58.7066005083747, -58.7060204443192, -58.7058933577661, -58.7057552259281, -58.705247085223, -58.7060326433903, -58.7065354720792, -58.7067023998361, -58.7068168323995, -58.7071505500491, -58.7071655084156, -58.7073646638181, -58.7075153765511, -58.7076241477658, -58.7079633234856, -58.7079673776874, -58.7081396229801, -58.7083280169605, -58.7084421719961, -58.7087761103686, -58.7087856180822, -58.7090332249911, -58.7092756599002, -58.7093952689549, -58.7097292135643, -58.7097606029, -58.7100246424689, -58.7101020272203, -58.7105990490733, -58.710914036394, -58.7108476169937, -58.7100940225114, -58.7092812998363, -58.7092218807675, -58.7090063644005, -58.7088555803196, -58.7083923956787, -58.7075738287646, -58.707046066265, -58.7067640804533, -58.7066005083747, -34.6462853713585, -34.6467659478867, -34.6468727615609, -34.6469884713917, -34.6474022059827, -34.6480865607297, -34.6476637530189, -34.6478007268533, -34.6478064473813, -34.6480894061426, -34.6481797001427, -34.6483485621906, -34.648476349479, -34.6484955295541, -34.6487785439779, -34.6488687223294, -34.6490147641139, -34.6491744970485, -34.6491982402101, -34.6494676766178, -34.6495579126981, -34.6497678460963, -34.6499596971684, -34.6499834971885, -34.65025293109, -34.6503388918924, -34.6505444904347, -34.6504777076236, -34.6500773556471, -34.6498102801799, -34.6495211445891, -34.648882226287, -34.6481885962228, -34.6481519130251, -34.6479828807341, -34.6478596012788, -34.647485140289, -34.6468184777252, -34.6463892459105, -34.6462871063973, -34.6462853713585))) |
# Verificar si existen valores que no tengan correspondencia
cantidad_na <- sum(is.na(radios_censales_con_depto$departamento_id))
print(paste("Cantidad de valores NA en departamento_id:", cantidad_na))## [1] "Cantidad de valores NA en departamento_id: 1241"
Existen múltiples NA, por lo que deben existir discrepancias de los
datos o formato del id de radio censal entre la tabla de polígonos
(radios censales), y las del df
(radio_depto).
Contar valores únicos
# Contar valores únicos
valores_unicos_CO_FRAC_RA <- length(unique(radios_censales$CO_FRAC_RA))
print(paste("Valores únicos en CO_FRAC_RA:", valores_unicos_CO_FRAC_RA))## [1] "Valores únicos en CO_FRAC_RA: 15123"
valores_unicos_LINK <- length(unique(radio_depto$LINK))
print(paste("Valores únicos en LINK:", valores_unicos_LINK))## [1] "Valores únicos en LINK: 13882"
Verificar la diferencia
# Verificar si hay valores en CO_FRAC_RA que no están en LINK
missing_values <- setdiff(radios_censales$CO_FRAC_RA, radio_depto$LINK)
# Verificar si hay valores en LINK que no están en CO_FRAC_RA
missing_values_reverse <- setdiff(radio_depto$LINK, radios_censales$CO_FRAC_RA)
cat("Valores en CO_FRAC_RA que no están en LINK:", length(missing_values),"\n")## Valores en CO_FRAC_RA que no están en LINK: 1241
## Valores en LINK que no están en CO_FRAC_RA: 0
Prueba de graficación
# Agrupar por provincia_id y departamento_id y unificar los polígonos
if (SIG) {
departamentos <- radios_censales_con_depto |>
group_by(provincia_id, departamento_id) |>
summarise(geometry = sf::st_union(geometry))
}## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
## always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Graficación de departamentos
if (SIG) {
ggplot() +
geom_sf(data = subset(departamentos, provincia_id == 6)) +
labs(title = "Departamentos en Área Metropolitana de Buenos Aires - PBA")
}
El gráfico termina de confirmar que en el dataset no están representados
todos los radios censales que existen en la df de polígonos. Por lo
tanto, no es posible utilizar el left join realizado para obtener el id
del departamento, debido a que los valores de radios en la df y en los
polígonos no coinciden. Se prueba extrayendo los datos de los id de
radios censales.
Lista de comunas
# Filtrar los datos de la tabla jurisdicciones para provincia "CABA"
id_comunas <- jurisdicciones |>
filter(provincia == "CABA") |>
select(id = departamento_id, comuna = departamento) |>
mutate(comuna = as.integer(sub("Comuna ", "", comuna)))
sample_n(id_comunas,5) |>
gt() |>
tab_header(
title = "ID Comunas CABA*",
subtitle = "* muestra"
) |>
tab_options(table.width = "50%") |>
gt_theme_538()| ID Comunas CABA* | |
| * muestra | |
| id | comuna |
|---|---|
| 2098 | 14 |
| 2077 | 11 |
| 2049 | 7 |
| 2084 | 12 |
| 2007 | 1 |
Extraer número de comuna del id de radio censal
# Añadir columnas provincia_id y departamento_id
radios_caba <- radios_caba |>
mutate(provincia_id = 2,
departamento_id = as.integer(str_extract(CO_FRAC_RA, "^[0-9]+"))) |>
select(CO_FRAC_RA, provincia_id, departamento_id, geometry)Reemplazar nº de comuna por id de departamento
# Reemplazar el valor que hay almacenado en departamento_id (nº de comuna)
# por el id que figura en id_comuna
radios_caba <- radios_caba |>
mutate(departamento_id = id_comunas$id[match(as.character(departamento_id), id_comunas$comuna)])
sample_n(radios_caba,2) |>
gt() |>
tab_header(
title = "Comunas CABA*",
subtitle = "* muestra"
) |>
cols_label(
CO_FRAC_RA = "Radio Censal",
geometry = "Geometría"
) |>
tab_options(table.width = "90%") |>
gt_theme_pff()| Comunas CABA* | |||
| * muestra | |||
| Radio Censal | provincia_id | departamento_id | Geometría |
|---|---|---|---|
| 11_17_4 | 2 | 2077 | list(list(c(-58.4858606087564, -58.4852605982612, -58.4847825437919, -58.4857821226546, -58.486403893421, -58.4865284699617, -58.4872641767527, -58.4882038459049, -58.4883373895334, -58.4877285591576, -58.4876037263581, -58.4886782792979, -58.4879331233658, -58.4869168489684, -58.4863788521795, -58.4858606087564, -34.6180151864075, -34.6184943298508, -34.6188760504956, -34.6197560372423, -34.6202857253034, -34.6203914793811, -34.6210161440045, -34.6202666292243, -34.6201603299073, -34.6196410015143, -34.6195342627514, -34.6186775296534, -34.618041395992, -34.6171717824186, -34.6176014103035, -34.6180151864075))) |
| 1_29_1 | 2 | 2007 | list(list(c(-58.3911698240387, -58.3902481919316, -58.3896704043105, -58.3894377419194, -58.3894258960916, -58.3893691970475, -58.3893129280756, -58.3892931641991, -58.39004824467, -58.3909253131393, -58.3910614930745, -58.3911698240387, -34.627252999868, -34.627230835481, -34.6272169693416, -34.6272078154353, -34.6274057022881, -34.6281330165234, -34.6288545560634, -34.6290457477217, -34.6291764858308, -34.6293283481459, -34.6281994468917, -34.627252999868))) |
# Crear un subset con los poligonos de PBA
radios_pba <- subset(radios_censales, !grepl("_", CO_FRAC_RA))Extraer número de departamento del id de radio censal
# Añadir columnas provincia_id y departamento_id
radios_pba <- radios_pba |>
mutate(provincia_id = 6,
departamento_id = as.integer(str_sub(CO_FRAC_RA, 2, 5))) |>
select(CO_FRAC_RA, provincia_id, departamento_id, geometry)
sample_n(radios_pba,2) |>
gt() |>
tab_header(
title = "Departamentos PBA*",
subtitle = "* muestra"
) |>
cols_label(
CO_FRAC_RA = "Radio Censal",
geometry = "Geometría"
) |>
tab_options(table.width = "90%") |>
gt_theme_pff()| Departamentos PBA* | |||
| * muestra | |||
| Radio Censal | provincia_id | departamento_id | Geometría |
|---|---|---|---|
| 062700216 | 6 | 6270 | list(list(c(-58.5455972728557, -58.5454887418036, -58.5441767170143, -58.5428710528851, -58.5415852067046, -58.5415516147536, -58.5411763164739, -58.5407552149005, -58.5403402099528, -58.5399364500054, -58.5395325250424, -58.540822992045, -58.5420914539662, -58.5433819597551, -58.5438072564344, -58.5442436388111, -58.5447132892213, -58.5448589052866, -58.5451387266558, -58.5455972728557, -34.8618599448857, -34.8618135814445, -34.8611849929193, -34.8605068950228, -34.8599461903046, -34.8599908524784, -34.8605000923362, -34.8611259504709, -34.8617158281248, -34.8622878132382, -34.8628688079206, -34.8634791615614, -34.8640982508313, -34.864708578131, -34.8641548656188, -34.8635922712129, -34.8630030342586, -34.8628064906433, -34.8624403053748, -34.8618599448857))) |
| 063710302 | 6 | 6371 | list(list(c(-58.5653976142726, -58.5647010214571, -58.5656303006586, -58.5649450495654, -58.5656534577098, -58.5663729186222, -58.5670979882217, -58.5678269465073, -58.568582806171, -58.5678417122965, -58.5670891238426, -58.5663596338612, -58.5654142548765, -58.5653976142726, -34.5202211044101, -34.5208348529065, -34.5215758664949, -34.52216270877, -34.522765923741, -34.5233602509076, -34.5239456261987, -34.5233502710456, -34.5227732537223, -34.5221696721703, -34.5216020054452, -34.5209579903395, -34.5202032728298, -34.5202211044101))) |
Unificación de df
links de referencia
# https://gis.stackexchange.com/questions/63577/joining-polygons-in-r
# https://r-spatial.github.io/sf/reference/geos_combine.html
# https://gis.stackexchange.com/questions/447288/the-combination-of-sfst-union-and-sfst-transform-turns-a-valid-geometry-into
# https://stackoverflow.com/questions/49354393/r-how-do-i-merge-polygon-features-in-a-shapefile-with-many-polygons-reproducibAplicación de la función
# Agrupar por provincia_id y departamento_id y unificar los polígonos
if (SIG) {
departamentos <- radios_censales_con_depto |>
# filter(departamento_id == 2007) |>
group_by(provincia_id, departamento_id) |>
summarise(geometry = sf::st_union(geometry))
}## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
## always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Al parecer, el warning nos previene de que la unificación de polígonos no estaría generando resultados perfectos. Existen radios que no pueden ser unificados en un solo registro, por lo que suponemos que el fraccionamiento posee discrepancias.
departamentos |>
ungroup() |>
sample_n(1) |>
gt() |>
tab_header(
title = "Jurisdicciones AMBA - Polígonos*",
subtitle = "* muestra"
) |>
tab_options(table.width = "90%") |>
gt_theme_pff()| Jurisdicciones AMBA - Polígonos* | ||
| * muestra | ||
| provincia_id | departamento_id | geometry |
|---|---|---|
| 6 | 6408 | list(c(-58.6898843308907, -58.6890341900105, -58.6879686809607, -58.6874492931312, -58.6866709457448, -58.6858923027284, -58.6820936138276, -58.6821798808092, -58.6832223653519, -58.683636366234, -58.6837869646115, -58.684104156231, -58.6843082574913, -58.684345907569, -58.6833630631935, -58.6826122219707, -58.6824355518659, -58.6817617066595, -58.6816512860772, -58.6793265213744, -58.6777801814448, -58.676962857308, -58.6761123187836, -58.6744831974204, -58.6744500665824, -58.6720310275313, -58.6698824672484, -58.6696063515778, -58.6677282938929, -58.6666566957314, -58.6666069198216, -58.6658282201827, -58.6657397842369, -58.6627455031036, -58.6627068416228, -58.6621819302634, -58.6614304899823, -58.6606732255322, -58.6605958993844, -58.6597617293841, -58.6589661376006, -58.6589495671709, -58.6580155831378, -58.6572972224585, -58.6566393219928, -58.6564459910962, -58.6556175673298, -58.6550483179821, -58.654407541633, -58.6541201489282, -58.6540256585643, -58.6540089409518, -58.6539529728768, -58.6538523756251, -58.6537735830097, -58.6537164495393, -58.65367007277, -58.6536466658835, -58.653620055266, -58.6535640761909, -58.6523828146679, -58.6510980549533, -58.650341418328, -58.6486138686481, -58.647146154596, -58.6458583315907, -58.6419704038462, -58.641697397622, -58.640763753527, -58.6375367982891, -58.6346867784415, -58.6346649731038, -58.6304404604488, -58.6292230322997, -58.6215904189882, -58.6213294180424, -58.6211145726093, -58.6206114074729, -58.6203515371794, -58.6203425699357, -58.6203429429892, -58.6201900018339, -58.6199135490628, -58.6197323136402, -58.6197270864728, -58.619845290682, -58.6199081628447, -58.6198874034188, -58.6198616407503, -58.6196563623146, -58.619585571871, -58.6194586266709, -58.6194781144399, -58.6193927646158, -58.6193053254093, -58.6192550721427, -58.6192498452691, -58.6192287138297, -58.6189808875853, -58.6188181855943, -58.6187717423268, -58.6186841576708, -58.6183660081612, -58.6181185742481, -58.6180482428894, -58.6179820210082, -58.6180030789615, -58.6190650187686, -58.6193795668256, -58.6198571667432, -58.6201830517779, -58.6202167971845, -58.6205137112864, -58.6205202052731, -58.6205208762824, -58.6205218455156, -58.6204861546637, -58.6204610660188, -58.6203619121984, -58.6203050923876, -58.6202267706201, -58.6202122099508, -58.6201975001733, -58.6202101900595, -58.6202619999104, -58.6203466591268, -58.6204082502393, -58.6205869017094, -58.6206878352633, -58.6208110157292, -58.621080218159, -58.6213377725971, -58.6215326188113, -58.6216337720226, -58.6217017037904, -58.6218024093437, -58.6218443569952, -58.6218901159461, -58.6218865278054, -58.6218926479318, -58.6218883150886, -58.6218731569505, -58.6218479927361, -58.6217189087057, -58.6214820940997, -58.6211592006367, -58.6210192186466, -58.6209923420638, -58.6207679953699, -58.6205861304559, -58.6203186354577, -58.62029190843, -58.6202761555217, -58.6202552510687, -58.620245246174, -58.6202162753259, -58.620187230058, -58.620164305651, -58.6200522340171, -58.6199141092464, -58.6198946223485, -58.6198530326823, -58.6198355592985, -58.6198649694512, -58.6198831821782, -58.6198888554054, -58.6200348675574, -58.620570774556, -58.620604216739, -58.6207147713877, -58.6207815809374, -58.6208660799046, -58.6209106442141, -58.6209332616107, -58.6209898422316, -58.6211473433502, -58.6212351181999, -58.6213724580504, -58.6214719489017, -58.6215424793439, -58.6215285142357, -58.6215239584961, -58.6214674414703, -58.6213825611367, -58.6212656556302, -58.6211480057826, -58.6206087954515, -58.6200959491578, -58.620022344474, -58.6198425903319, -58.6197474137882, -58.6196045378706, -58.6194298632098, -58.6193617099138, -58.6192930348531, -58.6192772097384, -58.6192666099511, -58.6191973385475, -58.6191342621555, -58.6191026867445, -58.6190869363501, -58.6186609346407, -58.6185750942608, -58.6177814892986, -58.6177117733931, -58.6175277831838, -58.6171442870675, -58.6170524082706, -58.6167659538946, -58.6167423707225, -58.6166816183869, -58.6164334881047, -58.6163963252415, -58.6163872960345, -58.616388043075, -58.6164820104138, -58.6167142037812, -58.6173829382966, -58.6185105115588, -58.6196211925096, -58.6201518205868, -58.621163356231, -58.6220199439613, -58.6248162503781, -58.6251091476958, -58.6266286054988, -58.6279269955684, -58.6284242549595, -58.6289435962926, -58.6303799654294, -58.6315125404798, -58.6326450896935, -58.6330096435848, -58.6341144791636, -58.6348880262857, -58.6356281407108, -58.6364236006159, -58.6373185697156, -58.6382961864179, -58.6383127485568, -58.6392737840595, -58.6395610750806, -58.6395721896314, -58.6395833041787, -58.6395943453246, -58.6400967883497, -58.6401188704195, -58.6412232551547, -58.6413723789731, -58.6421227058798, -58.6429266872276, -58.6436385719857, -58.6439806739278, -58.6452605940988, -58.6453280761402, -58.645384883413, -58.6454691440631, -58.6455698180442, -58.6457073046346, -58.6458220539258, -58.6458384261488, -58.6460163036998, -58.6477190205027, -58.6479905611861, -58.6488111424891, -58.6499453880363, -58.6501841775472, -58.6502276070968, -58.6508389581941, -58.6512761568491, -58.6517834412403, -58.651799636644, -58.6526457958944, -58.6537211053183, -58.6537537147502, -58.6538513978293, -58.6543018301403, -58.6548917820167, -58.6552057513686, -58.6554871844234, -58.6556223454017, -58.6559087916626, -58.6576476853818, -58.6603330395828, -58.6611203203234, -58.6623513321576, -58.6638738561319, -58.6639062521407, -58.6644890224511, -58.6648451663155, -58.665471092269, -58.6654872906389, -58.6661765770999, -58.6663380589892, -58.6664079410717, -58.6667195080406, -58.6667947662677, -58.6668592014717, -58.6672563501427, -58.6678412925013, -58.6684960560316, -58.668828781364, -58.668935938868, -58.668973497936, -58.6691664541709, -58.6693642845426, -58.6696387431029, -58.6697786608824, -58.6699615866698, -58.6702143290789, -58.6706523685473, -58.6715068780427, -58.6715339736186, -58.6728770767909, -58.6733597858295, -58.6737123207663, -58.6742062146555, -58.6749171665462, -58.674944334387, -58.6749659828441, -58.6755236110129, -58.6755397402244, -58.676019600305, -58.6760465540292, -58.6765255608303, -58.677026006757, -58.6770421364328, -58.6774400034441, -58.6774506852658, -58.6781419889334, -58.6793264019779, -58.6796104484349, -58.6800490023243, -58.6800757444599, -58.6803644610809, -58.6803751437815, -58.6805615574016, -58.6807427376298, -58.6810616576051, -58.6812152435641, -58.6812630679453, -58.6813853178405, -58.6816131896013, -58.6817413876923, -58.6819311952062, -58.6822015922197, -58.6823766235521, -58.6823445857823, -58.6823752847171, -58.6829004179229, -58.6834977399436, -58.6836921109625, -58.6839449955839, -58.6844206341676, -58.6847788917904, -58.6850173519774, -58.6857237542644, -58.6862567960884, -58.6868587565267, -58.6886345751955, -58.6890016184483, -58.6901193917809, -58.6903778927191, -58.6910028145306, -58.6920321702186, -58.6934172224342, -58.6921257816553, -58.6898843308907, -34.5968027605828, -34.5974921818016, -34.5983595526752, -34.598809152051, -34.5994362333871, -34.6000813335278, -34.6031770809404, -34.6032366010402, -34.6041807621724, -34.6045412660923, -34.6046690809896, -34.6049474166909, -34.6051389030458, -34.6051708565884, -34.6059714741578, -34.606576290673, -34.606718599725, -34.6072791745311, -34.6073681168987, -34.609262859028, -34.6105305395553, -34.6111976940897, -34.6118960298688, -34.6132213564562, -34.6132480370681, -34.61522273174, -34.6169794946849, -34.6172018217077, -34.6187406636434, -34.6196167864902, -34.6196613099754, -34.6202882481405, -34.620363895698, -34.6228278480927, -34.6228589715005, -34.6232948772072, -34.6239175783602, -34.624562744506, -34.6246249899043, -34.6253053595772, -34.625959106983, -34.6259724450393, -34.6267553600121, -34.6273513580762, -34.6279164704607, -34.6280720770247, -34.6287299466965, -34.629205892351, -34.6297216067824, -34.6299617998364, -34.6300734256925, -34.63009577492, -34.6301852921407, -34.6303374111751, -34.6304897708215, -34.6306513830117, -34.6308221274156, -34.6309210174369, -34.6312181689385, -34.6316456918145, -34.631528988783, -34.6314066228394, -34.6313306501156, -34.6312799714244, -34.6313448195843, -34.6314116476932, -34.6317740204399, -34.6317980203678, -34.631877752395, -34.6321617205526, -34.6324002496137, -34.6324000054828, -34.6326681057022, -34.6327625885442, -34.6327216208625, -34.6323491190207, -34.6321529007731, -34.6319173674483, -34.6318062663415, -34.6313599991955, -34.6313374697941, -34.630695784543, -34.6296110423235, -34.62903213037, -34.629018551032, -34.6287945525301, -34.6286195017309, -34.628556172641, -34.6284657465702, -34.6276927731102, -34.6273584740897, -34.6264647052154, -34.6262756432684, -34.6258330178179, -34.6255165570126, -34.6252591046012, -34.625245525242, -34.6252047254515, -34.6246971658895, -34.6243167582579, -34.6241584967984, -34.6238510473268, -34.6223241692683, -34.6211360961527, -34.6207747608676, -34.6201656019178, -34.619881916492, -34.6179740766404, -34.6174142958456, -34.6165544080141, -34.6159677127575, -34.6159050002033, -34.6154216311368, -34.6153586102823, -34.6153180572502, -34.6152594806479, -34.6151103547178, -34.6149793756298, -34.614712356747, -34.614522431148, -34.6143142353521, -34.6142059089755, -34.6141065943817, -34.6139985762567, -34.6138324130624, -34.6136576079195, -34.613559156333, -34.6133042927712, -34.6131341781388, -34.612937274531, -34.6124806307845, -34.6120689221106, -34.6118232535427, -34.6116396203068, -34.6114871587771, -34.6113305607597, -34.6111011909837, -34.6109710125135, -34.6108583034844, -34.6108178119698, -34.6107501619227, -34.6106778828342, -34.6105514098174, -34.6104462963516, -34.6102633507707, -34.610011830679, -34.6099065932996, -34.6098837557682, -34.6096063082355, -34.6093969417898, -34.6090919650724, -34.6090601156012, -34.6090238835085, -34.6089695661863, -34.608915372144, -34.6086897074563, -34.6084685486542, -34.6082068984118, -34.6074034308508, -34.6065275605108, -34.6063876310663, -34.6059364863822, -34.6056748976677, -34.6055445348841, -34.6054320723792, -34.6054186163354, -34.6051588770613, -34.6047232772508, -34.6046785879635, -34.6045851963741, -34.6045003236028, -34.6043345293897, -34.6042764455165, -34.6042271270164, -34.6041015777927, -34.6038059129789, -34.6034418587486, -34.6030468173412, -34.6026333210766, -34.6023231526118, -34.6021787789616, -34.6021246465386, -34.6019166976244, -34.6017760293526, -34.6015944383864, -34.6014579063543, -34.6004468065385, -34.5994900834981, -34.5993270080882, -34.5989914754772, -34.5988146356244, -34.5985561345693, -34.5982431925576, -34.5980801784349, -34.5979487055972, -34.5979169792748, -34.5978988323273, -34.5978034066629, -34.5976629836063, -34.597595025018, -34.5975587927695, -34.5966255803638, -34.5965434869967, -34.5957593381684, -34.5956909471209, -34.5949542625865, -34.5934311424677, -34.5930560409417, -34.5919261064896, -34.5917050084043, -34.5914249011646, -34.5886414226811, -34.5882534206463, -34.5881406494669, -34.5880955904197, -34.5880155343773, -34.5878153630483, -34.5872505847952, -34.5862898972855, -34.5853605550801, -34.5849068674631, -34.5840394839995, -34.5833145584124, -34.5809439995696, -34.5806949212148, -34.5794185897272, -34.5783290373455, -34.5779109910751, -34.5774751637061, -34.5762744649615, -34.5753227215478, -34.574370966865, -34.5740685902481, -34.5731435515371, -34.5724852037782, -34.5718715449096, -34.5712044183964, -34.5704482619803, -34.5696344327034, -34.5696210971478, -34.5688205950392, -34.5685759247197, -34.5685625282641, -34.5685491318074, -34.5685402413127, -34.5681312167073, -34.5681134356174, -34.5672063518123, -34.5670818219345, -34.5665042899104, -34.5659769242976, -34.5654169823154, -34.5651503762999, -34.5641640823454, -34.5640341344643, -34.5638905477069, -34.5637337452153, -34.5635726180009, -34.5634930213478, -34.5634717605359, -34.5631339330012, -34.5629150736132, -34.563402655753, -34.5634552385093, -34.5635815016079, -34.5638509394882, -34.5639076619294, -34.5639171557809, -34.5641808019398, -34.5644335072504, -34.5647320531059, -34.5647412455793, -34.5653094312501, -34.5655195954894, -34.5655244619594, -34.5655480733014, -34.5656566964939, -34.5658975526854, -34.5660226957857, -34.5661384660975, -34.5662030500115, -34.5663459153413, -34.5673024651909, -34.5690355379344, -34.5695444310693, -34.5702429618625, -34.5711114235389, -34.5711298053746, -34.571483207031, -34.5716989230523, -34.5720798329623, -34.5720890236762, -34.5725968131053, -34.5727202613147, -34.5727796132877, -34.5730579319613, -34.5731218492441, -34.5731811414614, -34.5735595431135, -34.574120265338, -34.574744841732, -34.5750639471122, -34.5751777857903, -34.575214249797, -34.575414653123, -34.57565116366, -34.575865975251, -34.575975663521, -34.5761218747271, -34.5763319415746, -34.5765395196563, -34.5769409159702, -34.5769502245186, -34.5774650921418, -34.5776055444202, -34.5777085257774, -34.5778310691, -34.5780100490324, -34.5780148508172, -34.5780240994665, -34.5782509858407, -34.5782646812863, -34.5785853641423, -34.578603683756, -34.5789784369738, -34.5793759547549, -34.5793896500101, -34.5797274656581, -34.5797411018183, -34.5804741864521, -34.5817263798512, -34.5820269022817, -34.5825499285141, -34.5825817653576, -34.5829319113524, -34.5829455472699, -34.5832179708895, -34.5834768172552, -34.5839850260725, -34.5842661074742, -34.5843432398779, -34.584538353261, -34.5849464272015, -34.5851100569136, -34.585513212245, -34.5859893463814, -34.5862931919062, -34.5869418246807, -34.5870683464782, -34.5876328586186, -34.5881125182811, -34.5882272851377, -34.5884328187327, -34.5886813148433, -34.5887708060723, -34.5888544984853, -34.5889837927252, -34.5890481213386, -34.5892348728768, -34.5903220821446, -34.5905468594552, -34.5915503598105, -34.5917469269661, -34.5922088194692, -34.5929454528703, -34.5939382679854, -34.5949700085824, -34.5968027605828)) |
Se observa que los polígonos departamentales son mucho más complejos.
Convertir a multipolígonos
# Asegura que todos son multipoligonos
if (SIG) {
departamentos <- departamentos |>
filter(st_geometry_type(geometry) != "POINT")
}# Graficación de departamentos
if (SIG) {
ggplot() +
geom_sf(data = subset(departamentos, provincia_id == 6)) +
labs(title = "Departamentos en Área Metropolitana de Buenos Aires - PBA")
}# graficación de barrios
if (SIG) {
barrios_caba <- subset(departamentos, provincia_id == 2)
ggplot() +
geom_sf(data = barrios_caba) +
labs(title = "Barrios en Ciudad Autónoma de Buenos Aires")
}Visualmente se distinguen algunas imperfecciones y líneas internas, lo que refuerza la hipótesis de que estos polígonos poseen algunos defectos en su geometría.Como alternativa final, a fin de evitar problemas en la graficación, es posible utilizar polígonos departamentales de fuentes oficiales.
Fuentes
# https://datos.gob.ar/dataset/ign-unidades-territoriales/archivo/ign_01.02.02
# https://bam21.org.ar/gis/
# https://www.ign.gob.ar/NuestrasActividades/InformacionGeoespacial/CapasSIGSe procedió a descargar el archivo de polígonos departamentales de Argentina desde la página de IGN (https://dnsg.ign.gob.ar/apps/api/v1/capas-sig/Geodesia+y+demarcaci%C3%B3n/L%C3%ADmites/departamento/shp), filtrando luego los que correspondían a departamentos y comunas de AMBA.
Lectura de la df
# lectura de los polígonos de radios censales
if (SIG) {
deptos_ign <- sf::st_read(paste0(PATH, "AMBA_shapes.shp")) |>
mutate(in1 = as.numeric(in1))
}## Reading layer `AMBA_shapes' from data source
## `F:\DocsAle\Diplomaturas\AdD y PP\04-Políticas Públicas y Machine Learning\proyecto_ machine_learning\datos\AMBA_shapes.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 54 features and 8 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -59.37811 ymin: -35.42144 xmax: -57.70822 ymax: -33.9425
## Geodetic CRS: WGS 84
Carga de datos IGN
if (SIG) {
sample_n(deptos_ign,1) |>
gt() |>
tab_header(title = "Departamentos* - IGN - GeoDataFrame",
subtitle = "* muestra"
) |>
gt_theme_pff()
}| Departamentos* - IGN - GeoDataFrame | ||||||||
| * muestra | ||||||||
| gid | objeto | fna | gna | nam | in1 | fdc | sag | geometry |
|---|---|---|---|---|---|---|---|---|
| 777 | Departamento | Partido de Brandsen | Partido | Brandsen | 6119 | ARBA - Gerencia de Servicios Catastrales | IGN | list(list(c(-58.1670369999999, -58.1695379999999, -58.169725528, -58.171294227, -58.1736999999999, -58.1770119999999, -58.177012517, -58.177251304, -58.16685, -58.165898, -58.16511, -58.164726, -58.162255, -58.158856, -58.1580552839999, -58.154073, -58.1507589999999, -58.1500369999999, -58.1479782919999, -58.1452889999999, -58.1449, -58.142927, -58.136225, -58.131277, -58.1100508769999, -58.1098542829999, -58.101843, -58.101831507, -58.101569432, -58.098316698, -58.0938513569999, -58.093272, -58.085093, -58.0845894249999, -58.083983857, -58.0800097159999, -58.0697989999999, -58.062541, -58.0618447799999, -58.0564919999999, -58.0522819999999, -58.051756, -58.050357, -58.0495420569999, -58.049302, -58.049174082, -58.042926, -58.0400309999999, -58.0360919999999, -58.031479197, -58.0306255799999, -58.0305759999999, -58.028956458, -58.024952572, -58.018931454, -58.018567177, -58.018072, -58.0202839999999, -58.028537, -58.03352431, -58.0380039999999, -58.03822, -58.0402719639999, -58.042245, -58.043006952, -58.0434339999999, -58.0458859999999, -58.048215999, -58.04848, -58.050652, -58.0537219999999, -58.0573909999999, -58.059451, -58.061574, -58.0693219999999, -58.076636696, -58.0766645209999, -58.077127, -58.0773359999999, -58.077531, -58.077121, -58.0654519999999, -58.056835999, -58.0553839999999, -58.054433, -58.054266, -58.0540859989999, -58.050871, -58.044929, -58.037806393, -58.037728, -58.0369449999999, -58.033947, -58.0302829999999, -58.027284, -58.026607, -58.025452656, -58.022482, -58.0184639999999, -58.018202999, -58.01267, -58.0061729999999, -58.0014389999999, -58.001203, -57.996792, -57.9904824829999, -57.983961, -57.983801999, -57.983553, -57.97588181, -57.970956256, -57.969470417, -57.9691053459999, -57.968108, -57.96532, -57.960541403, -57.95707, -57.9513449999999, -57.9494759999999, -57.9456029999999, -57.9453799999999, -57.942012, -57.9392149999999, -57.939432794, -57.939542, -57.93890372, -57.934386982, -57.930587159, -57.927495, -57.927331, -57.9271189999999, -57.9232019999999, -57.9222049269999, -57.917267, -57.9112499999999, -57.91029, -57.906648, -57.903407, -57.896874, -57.890917685, -57.890789855, -57.890210009, -57.890143, -57.894058, -57.896878, -57.8973839999999, -57.898759887, -57.9010989999999, -57.9043579999999, -57.904917, -57.905633, -57.906373, -57.9066979999999, -57.907747, -57.9091, -57.909166, -57.909489, -57.913039, -57.918874, -57.9207039999999, -57.927202, -57.928958, -57.9293769999999, -57.931135883, -57.9373899999999, -57.9400889999999, -57.953694, -57.9581709999999, -57.970657999, -57.970796, -57.970986, -57.982447, -57.985236495, -57.9939259999999, -57.994781662, -57.998466999, -58.000528, -58.0168193819999, -58.017556, -58.034467999, -58.035587, -58.035808365, -58.0358409999999, -58.0367724559999, -58.037036585, -58.0370839999999, -58.037932069, -58.03873, -58.0392209999999, -58.0393529999999, -58.0397629999999, -58.040001, -58.040311, -58.041195, -58.041401638, -58.041784, -58.0425799989999, -58.042658105, -58.043278, -58.0439499999999, -58.044276999, -58.044573, -58.044821, -58.0449879999999, -58.045153918, -58.0454525809999, -58.0483619999999, -58.049156, -58.055102, -58.056711934, -58.0592155739999, -58.059723, -58.065053162, -58.068126999, -58.076047, -58.077024396, -58.0807374359999, -58.084867, -58.087933, -58.0953939999999, -58.102855, -58.1057279999999, -58.112945, -58.1216269999999, -58.122846, -58.1340099999999, -58.138618, -58.13919579, -58.1392069999999, -58.145226, -58.145588394, -58.1506919999999, -58.1531449999999, -58.15486, -58.154976092, -58.1549882309999, -58.154978966, -58.1548616969999, -58.1569909999999, -58.161013, -58.161313, -58.1655289999999, -58.168677999, -58.1697409999999, -58.175405999, -58.1814929999999, -58.181941514, -58.1820989999999, -58.182790309, -58.1862439999999, -58.186278514, -58.1868499999999, -58.186985756, -58.1945489999999, -58.1947749999999, -58.1964179999999, -58.209582, -58.2100119999999, -58.2125180639999, -58.219269001, -58.2254589999999, -58.2256849999999, -58.234617, -58.242779, -58.243013316, -58.2432372769999, -58.2595549989999, -58.2526599999999, -58.2484479999999, -58.2480189999999, -58.2467, -58.246816, -58.2469409999999, -58.247372637, -58.247422, -58.2474626429999, -58.24891, -58.249427, -58.2500154319999, -58.259014043, -58.280816, -58.281022983, -58.2813849999999, -58.2817155399999, -58.2819909999999, -58.292432, -58.3027949999999, -58.3088379449999, -58.309116, -58.30960706, -58.309721, -58.313775, -58.3153589999999, -58.315688, -58.3231929999999, -58.331558, -58.331782, -58.334628218, -58.335188, -58.335661, -58.3456533459999, -58.3459769999999, -58.3460998749999, -58.3462789989999, -58.3456967179999, -58.345561, -58.353917, -58.3646249999999, -58.3648219999999, -58.370421311, -58.3707529989999, -58.371559857, -58.371684, -58.3847102299999, -58.3851549999999, -58.385689127, -58.385759, -58.3922719999999, -58.398882, -58.399105, -58.400446936, -58.407477, -58.4155499999999, -58.4182759999999, -58.421664, -58.42611389, -58.426139, -58.426344, -58.426720772, -58.4267429989999, -58.426948, -58.427247584, -58.428189, -58.429273, -58.4304, -58.431545, -58.43278, -58.43317286, -58.435819, -58.43636, -58.442483895, -58.4429626739999, -58.4440792999999, -58.446903, -58.4461112349999, -58.44591109, -58.4234519999999, -58.414816, -58.410697, -58.3604256789999, -58.3527099999999, -58.3388439999999, -58.308326, -58.291569, -58.286525248, -58.2786149999999, -58.278113, -58.274785999, -58.274554, -58.273432, -58.264965, -58.262245999, -58.248954, -58.2445865839999, -58.244541, -58.2427852829999, -58.241285521, -58.2362679999999, -58.237391427, -58.240619937, -58.247687, -58.2465844079999, -58.2464869999999, -58.246465171, -58.2363990379999, -58.229741052, -58.227954825, -58.1917070059999, -58.182766869, -58.1765193209999, -58.161733692, -58.161419, -58.161175, -58.1608689999999, -58.160616728, -58.1605011409999, -58.160335, -58.1560295199999, -58.150969999, -58.14936317, -58.143124166, -58.1411239999999, -58.1364641439999, -58.127447, -58.125753, -58.1234499999999, -58.120421123, -58.12038, -58.120457436, -58.120261, -58.1204509999999, -58.125214, -58.125459, -58.127679604, -58.127878, -58.129851, -58.1303849999999, -58.1359689999999, -58.1360989999999, -58.136228, -58.1368861089999, -58.140552079, -58.140959, -58.1412079999999, -58.156430999, -58.16147, -58.161753, -58.163898, -58.164734, -58.1670369999999, -35.0477359999999, -35.0500709999999, -35.050243074, -35.0516824919999, -35.05389, -35.056972, -35.056972389, -35.057152087, -35.0651579999999, -35.0658989999999, -35.0665119999999, -35.0667989999999, -35.068723, -35.0713019999999, -35.071905509, -35.0749069999999, -35.077441, -35.077985, -35.079571957, -35.081645, -35.0819739999999, -35.083456, -35.088565, -35.0923789999999, -35.108428287, -35.108254605, -35.101177, -35.1011852829999, -35.101374157, -35.1037183569999, -35.106936466, -35.1073539999999, -35.113554, -35.1139330299999, -35.114388827, -35.1173800789999, -35.12501, -35.130394, -35.130908828, -35.1348669999999, -35.138028, -35.13843, -35.139448, -35.140099955, -35.1402919999999, -35.1403838059999, -35.144868, -35.147015, -35.150024, -35.1535137069999, -35.154159491, -35.154197, -35.1560046619999, -35.1604736309999, -35.1671941459999, -35.1675827519999, -35.168111, -35.169992, -35.1770969999999, -35.1813894479999, -35.185245, -35.185513, -35.1872764149999, -35.188972, -35.189741001, -35.190172, -35.192284, -35.194296, -35.194544, -35.196447, -35.1991179999999, -35.202376, -35.204201, -35.206026, -35.2128109999999, -35.2192147559999, -35.219239116, -35.219644, -35.2198289999999, -35.220003, -35.220321, -35.228806, -35.235058, -35.2357989999999, -35.2365799999999, -35.236705, -35.2368269999999, -35.23382, -35.228308, -35.22160181, -35.221528, -35.2207569999999, -35.217981, -35.214486, -35.211627, -35.2109859999999, -35.209906933, -35.2071299999999, -35.203475, -35.203209, -35.198497, -35.192962, -35.1889609999999, -35.1886759999999, -35.18474, -35.1793308589999, -35.17374, -35.1735869999999, -35.173379, -35.1665794799999, -35.162213612, -35.1608966059999, -35.160573018, -35.159689, -35.16351, -35.1670716579999, -35.1697829999999, -35.174254, -35.1756809999999, -35.1786719999999, -35.178844, -35.181436, -35.183569, -35.1837528259999, -35.183845, -35.184319973, -35.187681084, -35.190508705, -35.1928599999999, -35.192942, -35.1930849999999, -35.1960159999999, -35.196758436, -35.20061, -35.205363, -35.206114, -35.208963, -35.2115239999999, -35.216743, -35.221519733, -35.221622247, -35.222087261, -35.222141, -35.2255709999999, -35.228015, -35.2284559999999, -35.2296441139999, -35.231664, -35.234438, -35.2349129999999, -35.2355469999999, -35.2361999999999, -35.2367869999999, -35.2376629999999, -35.2387919999999, -35.238847, -35.2391049999999, -35.2421239999999, -35.247001, -35.248531, -35.253933, -35.255392, -35.255622, -35.257092675, -35.262322, -35.264553, -35.2756889999999, -35.279351, -35.2896049999999, -35.2897189999999, -35.2898749999999, -35.299325, -35.301615355, -35.30875, -35.309512201, -35.3127949999999, -35.314782, -35.3282385589999, -35.3288469999999, -35.3428269999999, -35.343789, -35.3439711469999, -35.3439979999999, -35.343330556, -35.343136785, -35.3431019999999, -35.342354401, -35.341651, -35.341039, -35.3406909999999, -35.339672, -35.339323, -35.339086, -35.3383969999999, -35.338273016, -35.337975, -35.337498, -35.3374436829999, -35.336868, -35.336193, -35.3357809999999, -35.335259, -35.3345629999999, -35.3346969999999, -35.33485028, -35.335126193, -35.337814, -35.338609, -35.3440649999999, -35.345545331, -35.347847423, -35.348314, -35.353195754, -35.356011, -35.363219, -35.364119046, -35.367538243, -35.371341, -35.3741669999999, -35.3810809999999, -35.387956, -35.3906249999999, -35.3973389999999, -35.405245, -35.4061349999999, -35.416194, -35.420373, -35.4199408339999, -35.419951, -35.415448, -35.415178624, -35.4113849999999, -35.409482, -35.408153, -35.408248038, -35.408257975, -35.4082457439999, -35.408090933, -35.4063459999999, -35.40305, -35.402835, -35.3994939999999, -35.3969979999999, -35.3961459999999, -35.391602, -35.386702, -35.386397776, -35.386271, -35.3858011959999, -35.3830129999999, -35.383042524, -35.382581, -35.3826971299999, -35.3891669999999, -35.389466, -35.390885, -35.402118, -35.4023999999999, -35.403926288, -35.408037865, -35.403428, -35.4032529999999, -35.3965969999999, -35.390392, -35.3902418399999, -35.3900715569999, -35.377109, -35.370688, -35.3670099999999, -35.366664, -35.3654349999999, -35.365325, -35.365261, -35.3649394089999, -35.3648929999999, -35.364872351, -35.363794, -35.3633859999999, -35.362931267, -35.355977261, -35.339129, -35.339004592, -35.338787, -35.3385202759999, -35.338355, -35.3299289999999, -35.322168, -35.317657082, -35.317495, -35.317128703, -35.317062, -35.314039, -35.3128859999999, -35.3126399999999, -35.3070489999999, -35.300808, -35.3006589999999, -35.2984829719999, -35.298055, -35.298012, -35.291806013, -35.2916049999999, -35.2915203709999, -35.291397, -35.2907498399999, -35.2905989999999, -35.284367, -35.276292, -35.2759809999999, -35.271451327, -35.271183, -35.2706959389999, -35.2706209999999, -35.2609272399999, -35.2606949999999, -35.260298485, -35.260262, -35.2554269999999, -35.2505189999999, -35.250329, -35.2493079619999, -35.243959, -35.2377759999999, -35.2356859999999, -35.2329579999999, -35.2294775729999, -35.229464, -35.229342, -35.2290429509999, -35.229031, -35.2289089999999, -35.228671215, -35.227924, -35.227066, -35.2261809999999, -35.225293, -35.224322, -35.224015106, -35.2219479999999, -35.2213869999999, -35.216506464, -35.216238265, -35.2156127609999, -35.214031, -35.2133251939999, -35.213146778, -35.1931259999999, -35.1854339999999, -35.188431, -35.1445915159999, -35.137863, -35.1485269999999, -35.122176, -35.1078239999999, -35.103611529, -35.097005, -35.096605, -35.0938889999999, -35.0936839999999, -35.092866, -35.0850139999999, -35.0824299999999, -35.070031, -35.066019866, -35.065978, -35.06434325, -35.0629468189999, -35.058275, -35.057438357, -35.0550340089999, -35.049771, -35.0482847379999, -35.048357, -35.0483373659999, -35.0392836679999, -35.033295332, -35.0316887609999, -34.999086688, -34.991045737, -34.9854265559999, -34.972128041, -34.971845, -34.972191, -34.9726669999999, -34.9729537589999, -34.9730851469999, -34.9732739999999, -34.976571626, -34.980562, -34.981783419, -34.9867043839999, -34.988282, -34.9918982689999, -34.9988959999999, -35.00021, -35.001997, -35.004347093, -35.004379, -35.0044481799999, -35.0045719999999, -35.004717, -35.0091189999999, -35.0093229999999, -35.011400399, -35.011586, -35.0133489999999, -35.013839, -35.018953, -35.0190719999999, -35.019191, -35.0197979179999, -35.023178731, -35.0235539999999, -35.023766, -35.0379419999999, -35.0426409999999, -35.042832, -35.0448479999999, -35.0456579999999, -35.0477359999999))) |
Por su tamaño, se puede suponer que estos polígonos son bastante más complejos.
Graficación
# Graficación de departamentos
if (SIG) {
ggplot() +
geom_sf(data = subset(deptos_ign, gna == "Comuna")) +
labs(title = "Comunas en Ciudad de Buenos Aires - IGN")
}
El resultado es en apariencia más prolijo que la unión de polígonos de
radios censales.
Para la descripción y análisis se generaron alias de las tablas principales:
dfdf_a_letra &
empleo_tipodf_sin_desagregar
& empleodf_x_deptodf_x_letra_y_deptodf_sin_des_x_depradios_censalesdeptos_ign# Lista de tablas
tabla_df <- data.frame(
`tipo` = c(
"Completa (CLAE nivel 2)", "x Letra", "Sin actividad", "Polígonos"
),
`X radio censal` = c("df", "df_a_letra, empleo tipo", "df_sin_desagregar, empleo", "radios_censales"),
`X departamento` = c("df_x_depto", "df_x_letra_y_depto", "df_sin_des_x_dep", "deptos_ign"),
`Consolidado` = c("","df_x_actividad","totales","")
)
tabla_df |>
gt(rowname_col = "tipo") |>
tab_options(table.width = "75%") |>
# tab_stubhead(label = "Variable") |>
opt_stylize(style = 5, color = 'cyan')| X.radio.censal | X.departamento | Consolidado | |
|---|---|---|---|
| Completa (CLAE nivel 2) | df | df_x_depto | |
| x Letra | df_a_letra, empleo tipo | df_x_letra_y_depto | df_x_actividad |
| Sin actividad | df_sin_desagregar, empleo | df_sin_des_x_dep | totales |
| Polígonos | radios_censales | deptos_ign |
Totales
totales <- df_sin_des_x_dep |>
ungroup() |>
mutate(
Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
) |>
summarise(
Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Poblacion = sum(Poblacion_depto, na.rm = TRUE),
Viviendas = sum(Viviendas_depto, na.rm = TRUE)
)
totales |>
gt() |>
tab_header(
title = "Empleo AMBA - Totales",
) |>
tab_options(table.width = "75%") |>
opt_stylize(style = 5, color = 'cyan')| Empleo AMBA - Totales | |||||||
| Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Poblacion | Viviendas |
|---|---|---|---|---|---|---|---|
| 2260438 | 1277548 | 980849 | 127592 | 136589.1 | 115864.2 | 13912400 | 4688453 |
Parciales CABA y PBA
remuneraciones <- df_sin_des_x_dep |>
mutate(
Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
) |>
summarise(
Trabajadores_total = sum(Cantidad_trabajadores, na.rm = TRUE),
Trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Poblacion = sum(Poblacion_depto, na.rm = TRUE),
Viviendas = sum(Viviendas_depto, na.rm = TRUE)
) |>
left_join(distinct(select(jurisdicciones, 1:2)), by = c("provincia_id" = "provincia_id")) |>
select(c(10,2,3,4,5,6,7,8,9))
#https://gt.rstudio.com/reference/data_color.html
remuneraciones |>
column_to_rownames(var="provincia") |>
t() |>
as.data.frame() |>
rownames_to_column(var="variable") |>
gt(rowname_col = "variable") |>
tab_header(title = "Empleo AMBA - Parciales CABA y PBA") |>
tab_row_group(
label = "Cantidad",
rows = matches("^Trabajadores")
) |>
tab_row_group(
label = "Remuneración",
rows = matches("^Remuneracion")
) |>
row_group_order(groups = c("Cantidad", "Remuneración", NA)) |>
tab_options(row_group.default_label = "Población y Vivienda") |>
tab_options(table.width = "75%") |>
opt_stylize(style = 5, color = 'cyan') |>
data_color(
method = "bin",
palette = "RdBu",
domain = c(170000, 100000),
rows = c(5,6)
)| Empleo AMBA - Parciales CABA y PBA | ||
| CABA | PBA | |
|---|---|---|
| Cantidad | ||
| Trabajadores_total | 881711.0 | 1378727.0 |
| Trabajadores_Hombres | 463689.0 | 813859.0 |
| Trabajadores_Mujeres | 416630.0 | 564219.0 |
| Remuneración | ||
| Remuneracion_media | 151177.4 | 112508.8 |
| Remuneracion_media_Hombres | 167546.5 | 118951.4 |
| Remuneracion_media_Mujeres | 132932.9 | 103260.3 |
| Población y Vivienda | ||
| Poblacion | 2755077.0 | 11157323.0 |
| Viviendas | 1361627.0 | 3326826.0 |
Como puede apreciarse de esta tabla, existe se evidencia que existe una brecha salarial no solo por género, sino por ubicación, con una diferencia notable entre CABA y el sector AMBA de la PBA, incluso más pronunciada que la de género. Esto no implica que en las variables geográficas puedan jugarse otros factores, como el costo de vida, o el tipo de actividad, pero es una primera apreciación.
Gráfigo geoespacial
# Gráfico de remuneración promedio por jurisdicción
df_sin_des_x_dep |>
left_join(select(deptos_ign, c(5,6,9)), by = c("departamento_id" = "in1")) |>
ggplot(aes(fill = Remuneracion_media, geometry = geometry)) +
geom_sf() +
scale_fill_viridis_c(option = "D",
direction = 1,
limits = c(90000, 200000)) +
labs(title = "Remuneración Media por Jurisdicción")# Gráfico de remuneración promedio por comuna
df_sin_des_x_dep[df_sin_des_x_dep$provincia_id == 2, ] |>
left_join(select(deptos_ign, c(5,6,9)), by = c("departamento_id" = "in1")) |>
ggplot(aes(fill = Remuneracion_media, geometry = geometry)) +
geom_sf() +
scale_fill_viridis_c(option = "D",
direction = 1,
limits = c(90000, 200000)) +
labs(title = "Remuneración Media por Comuna CABA")Visualmente se aprecia una diferencia importante de salario promedio para zona norte de CABA y del Gran Buenos Aires, y que si bien en CABA se observa un promedio mayor que en el resto del AMBA, esta diferencia no está repartida homogeneamente (se utiliza misma escala para ambos gràficos).
Gráficos de barras
# Gráfico de barras de remuneración promedio por jurisdicción
#https://ggplot2.tidyverse.org/reference/scale_viridis.html
df_sin_des_x_dep |>
left_join(select(jurisdicciones, c(3,4)), by = c("departamento_id" = "departamento_id")) |>
ggplot(aes(Remuneracion_media, reorder(departamento, Remuneracion_media))) +
geom_col(width = 0.7, alpha = 0.8, show.legend = FALSE,
aes(fill = reorder(departamento, Remuneracion_media),
color=reorder(departamento, Remuneracion_media))) +
scale_fill_viridis_d(option = "D",
direction = 1,
aesthetics = c("colour", "fill")) +
scale_x_continuous(expand = c(0.01,0),
labels = scales::dollar_format(prefix = " AR$",
big.mark = ".",
decimal.mark = ",",)) +
geom_text(aes(label = sprintf("AR$ %.2f", Remuneracion_media)),
hjust = 1, size = 2.5, nudge_y = 0.04) +
labs(title = "Remuneración Promedio por Jurisdicción",
subtitle = "Listado completo",
x = "Remuneración Promedio", y = "Jurisdicción")# Gráfico de remuneración promedio por género y jurisdicción
df_sin_des_x_dep |>
left_join(select(jurisdicciones, c(3,4)), by = c("departamento_id" = "departamento_id")) |>
ggplot() +
geom_col(aes(-Remuneracion_media_Hombres,
reorder(departamento, Remuneracion_media),
color=Remuneracion_media_Hombres,
fill=Remuneracion_media_Hombres),
width = 0.7,
alpha = 0.8,
show.legend = FALSE)+
geom_text(aes(0,
reorder(departamento, Remuneracion_media_Hombres),
label = sprintf("AR$ %.2f", Remuneracion_media_Hombres)),
hjust = 1.2, size = 2.5, nudge_y = 0.04) +
geom_col(aes(Remuneracion_media_Mujeres,
reorder(departamento, Remuneracion_media_Hombres),
color=Remuneracion_media_Mujeres,
fill=Remuneracion_media_Mujeres),
width = 0.7,
alpha = 0.8,
show.legend = FALSE)+
geom_text(aes(0,
reorder(departamento, Remuneracion_media),
label = sprintf("AR$ %.2f", Remuneracion_media_Mujeres)),
hjust = -0.2, size = 2.5, nudge_y = 0.04) +
scale_fill_viridis_c(option = "D",
direction = 1,
aesthetics = c("colour", "fill")) +
scale_x_continuous(limits = c(-228000,228000),
labels = scales::dollar_format(prefix = " AR$",
big.mark = ".",
decimal.mark = ",",)) +
labs(title = "Remuneración Promedio por Jurisdicción y Género*",
subtitle = "* ordenada por Remuneración promedio General",
x = "Hombres - Remuneración Promedio - Mujeres", y = "Jurisdicción")De estos gráficos se desprende que 10 de las comunas CABA están en el top 15, y que la excepción al promedio es Comuna 8 (Villa Soldati, Villa Riachuelo, Villa Lugano), que se ubica entre las 10 jurisdicciones con remuneración media más baja. La brecha es evidente, siendo que el de mayor promedio, Comuna 2 (Recoleta), duplica en remuneración promedio a la última, Presidente Perón.
En el 2do gráfico de barras, se aprecia que la brecha de remuneración por género se mantiene de manera constante, si bien quizças parece más acentuada en las jurisdicciones de mayor promedio general.
Cálculo de df consolidada x actividad
# Calcula totales por actividad
df_x_actividad <- df_x_letra_y_depto |>
mutate(
Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
) |>
group_by(letra) |>
summarise(
Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
Poblacion = sum(datos_depto$Poblacion_depto, na.rm = TRUE),
Viviendas = sum(datos_depto$Viviendas_depto, na.rm = TRUE)
)
df_x_actividad |>
ungroup() |>
gt() |>
tab_header(
title = "Empleo AMBA - Por Actividad",
) |>
tab_options(table.width = "75%") |>
gt_theme_538() |>
data_color(
palette = "plasma",
columns = 2
) |>
data_color(
palette = "plasma",
columns = 5
)| Empleo AMBA - Por Actividad | ||||||||
| letra | Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Poblacion | Viviendas |
|---|---|---|---|---|---|---|---|---|
| 71 | 40 | 31 | 71351.19 | 69711.27 | 73467.23 | 13912400 | 4688453 | |
| A | 9192 | 6540 | 2639 | 138562.86 | 140644.28 | 132381.76 | 13912400 | 4688453 |
| B | 7818 | 5187 | 2606 | 415222.50 | 468673.59 | 300370.29 | 13912400 | 4688453 |
| C | 304337 | 236510 | 67562 | 135728.31 | 138584.01 | 125739.59 | 13912400 | 4688453 |
| D | 8968 | 7075 | 1891 | 274281.30 | 288482.98 | 221074.89 | 13912400 | 4688453 |
| E | 16605 | 14669 | 1935 | 182874.24 | 180178.17 | 203367.96 | 13912400 | 4688453 |
| F | 76490 | 69037 | 7216 | 81069.61 | 78098.72 | 109922.93 | 13912400 | 4688453 |
| G | 254633 | 158336 | 95809 | 104441.16 | 109719.90 | 95712.35 | 13912400 | 4688453 |
| H | 137829 | 118369 | 19420 | 135964.85 | 137947.50 | 123942.36 | 13912400 | 4688453 |
| I | 64442 | 36851 | 27387 | 54677.24 | 56268.96 | 52620.87 | 13912400 | 4688453 |
| J | 102681 | 67293 | 35222 | 204829.50 | 222169.73 | 171798.01 | 13912400 | 4688453 |
| K | 86444 | 41269 | 45136 | 257629.06 | 301140.91 | 217663.25 | 13912400 | 4688453 |
| L | 17717 | 10467 | 7236 | 92034.19 | 101580.22 | 78265.67 | 13912400 | 4688453 |
| M | 67247 | 33330 | 33810 | 156256.58 | 179092.63 | 133787.52 | 13912400 | 4688453 |
| N | 139458 | 89161 | 50139 | 91247.11 | 97436.48 | 80088.83 | 13912400 | 4688453 |
| O | 437728 | 195576 | 242088 | 131208.71 | 143078.50 | 121626.17 | 13912400 | 4688453 |
| P | 291301 | 84652 | 206593 | 99569.81 | 100343.55 | 99262.86 | 13912400 | 4688453 |
| Q | 117823 | 35355 | 82394 | 122798.20 | 139294.32 | 115765.75 | 13912400 | 4688453 |
| R | 22344 | 13911 | 8410 | 92334.36 | 101975.41 | 75835.35 | 13912400 | 4688453 |
| S | 94746 | 52766 | 41924 | 111456.76 | 122155.58 | 98020.67 | 13912400 | 4688453 |
| T | 18 | 13 | 5 | 73358.61 | 79546.93 | 57268.97 | 13912400 | 4688453 |
| U | 968 | 431 | 532 | 235940.21 | 239518.69 | 233187.92 | 13912400 | 4688453 |
Gráficos de barras
# Gráfico de barras de remuneración promedio por actividad
df_x_actividad |>
ungroup() |>
left_join(distinct(select(actividades, c(3,4))), by = c("letra" = "letra")) |>
mutate(Actividad = paste0(letra," - ",letra_desc)) |>
ggplot(aes(Remuneracion_media, reorder(Actividad, Cantidad_trabajadores))) +
geom_col(width = 0.7, alpha = 0.8, show.legend = FALSE,
aes(fill = reorder(letra, Remuneracion_media),
color=reorder(letra, Remuneracion_media))) +
scale_fill_viridis_d(option = "C",
direction = 1,
aesthetics = c("colour", "fill")) +
scale_x_continuous(expand = c(0.01,0),
labels = scales::dollar_format(prefix = " AR$",
big.mark = ".",
decimal.mark = ",",)) +
geom_text(aes(label = sprintf("AR$ %.2f", Remuneracion_media)),
hjust = 1, size = 2.5, nudge_y = 0.04) +
labs(title = "Remuneración Promedio por Actividad*",
subtitle = "* organizado de mayor a menor cantidad de trabajadores",
x = "Remuneración Promedio", y = "Actividad") +
theme(axis.text.y = element_text(size = 6)) + # Reducir el tamaño de letra del eje Y
scale_y_discrete(labels = function(y) str_wrap(y, width = 40)) # Dividir en dos líneas si es necesarioDe la tabla y gráficos podemos observar que el tipo de actividad representa el mayor ejemplo de brecha salarial, y que en general,podemos ubicar las actividades con mayor remuneración promedio como las que tienen menos cantidad de trabajadores totales.
Las excepciones parecen ser los sin categorizar (entendemos que por falta de datos en base) y los de personal doméstico de hogares privados. Sin embargo, en la sección consideraciones de la metodología, se aclara: > “no forman parte de la base las relaciones laborales no registradas y las diversas formas de trabajo por cuenta propia, sea registrado o no. A su vez, dado que los trabajadores de casas particulares cuentan con un régimen especial, este tampoco es incluido en la información provista.”
Con estas aclaraciones, lo que entendemos es que el grueso de trabajadores “en negro” no estaría incluido en estos datos.
Proporción de trabajadores
# Gráfico de proporción de trabajadores por población
# https://www.indec.gob.ar/indec/web/Nivel4-Tema-4-31-58
# https://www.indec.gob.ar/uploads/informesdeprensa/mercado_trabajo_eph_2trim228FD416F03D.pdf
df_proporcion <- df_sin_des_x_dep |>
ungroup() |>
left_join(select(deptos_ign, c(5,6,9)), by = c("departamento_id" = "in1")) |>
mutate(Proporcion_trabajadores = Cantidad_trabajadores/Poblacion_depto )
df_proporcion|>
ggplot(aes(fill = Proporcion_trabajadores, geometry = geometry)) +
geom_sf() +
scale_fill_viridis_c(option = "D",
direction = 1) +
labs(title = "Proporción de trabajadores*",
subtitle = "* cantidad de trabajadores / población de la jurisdicción")
Este gráfico nos da una un argumento para soportar esta hipótesis.
Consultando estadísticas sobre Población Económicamente Activa (PEA),
para la fecha de este relevamiento (octubre 2021) provistas por el INDEC
(https://www.indec.gob.ar/uploads/informesdeprensa/mercado_trabajo_eph_2trim228FD416F03D.pdf),
alrededor del 46,7%, vemos que nuestros datos dan una proporción mucho
menor (en promedio, (
16.25%), y que también existe una gran
diferencia entre las proporciones de CABA (32%), y PBA
(12.36%).
Tal como se indica en la tabla debajo, existen jurisdicciones con proporciones de menos del 6% (Ensenada), y la más alta de 37,2% (Comuna 1). Todo esto, en principio podríamos atribuirlo al empleo informal y la desocupación, pero por supuesto se necesitaría de acceso a muchos otros datos censales para confrontar este supuesto.
df_proporcion |>
select(c(11,3,9,10,13)) |>
gt() |>
tab_header(
title = "Empleo AMBA - Población y Trabajadores",
) |>
tab_options(table.width = "75%") |>
gt_theme_538() |>
data_color(
palette = "plasma",
columns = 5
)| Empleo AMBA - Población y Trabajadores | ||||
| nam | Cantidad_trabajadores | Poblacion_depto | Viviendas_depto | Proporcion_trabajadores |
|---|---|---|---|---|
| Comuna 1 | 54400 | 146162 | 88431 | 0.37218976 |
| Comuna 2 | 55003 | 157932 | 108136 | 0.34827014 |
| Comuna 3 | 65342 | 187186 | 101212 | 0.34907525 |
| Comuna 4 | 54237 | 200608 | 77545 | 0.27036310 |
| Comuna 5 | 60000 | 178452 | 92582 | 0.33622487 |
| Comuna 6 | 60167 | 175447 | 93108 | 0.34293547 |
| Comuna 7 | 58230 | 200044 | 85338 | 0.29108596 |
| Comuna 8 | 31920 | 158184 | 47595 | 0.20179032 |
| Comuna 9 | 45639 | 160821 | 63074 | 0.28378757 |
| Comuna 10 | 49555 | 163773 | 70646 | 0.30258345 |
| Comuna 11 | 58246 | 189832 | 84734 | 0.30682920 |
| Comuna 12 | 67034 | 200116 | 93502 | 0.33497571 |
| Comuna 13 | 82217 | 230305 | 129207 | 0.35699182 |
| Comuna 14 | 78990 | 224320 | 140376 | 0.35213088 |
| Comuna 15 | 60731 | 181895 | 86141 | 0.33387944 |
| Almirante Brown | 81592 | 521037 | 147495 | 0.15659540 |
| Avellaneda | 50047 | 325434 | 107141 | 0.15378541 |
| Berazategui | 31008 | 315441 | 91126 | 0.09830047 |
| Berisso | 6142 | 85881 | 26563 | 0.07151757 |
| Brandsen | 3317 | 23242 | 7274 | 0.14271577 |
| Cañuelas | 9234 | 45105 | 13253 | 0.20472231 |
| Ensenada | 3182 | 53778 | 16561 | 0.05916918 |
| Escobar | 27386 | 205161 | 57432 | 0.13348541 |
| Esteban Echeverría | 39322 | 292899 | 83695 | 0.13425106 |
| Ezeiza | 17209 | 162305 | 44051 | 0.10602877 |
| Florencio Varela | 27891 | 394908 | 106232 | 0.07062658 |
| General Las Heras | 2158 | 11550 | 3616 | 0.18683983 |
| General Rodríguez | 8544 | 71926 | 20830 | 0.11878876 |
| General San Martín | 51520 | 391815 | 127323 | 0.13149063 |
| Hurlingham | 20497 | 180947 | 55037 | 0.11327626 |
| Ituzaingó | 13370 | 167627 | 51383 | 0.07976042 |
| José C. Paz | 31520 | 257881 | 69741 | 0.12222692 |
| La Matanza | 186525 | 1660511 | 455650 | 0.11232988 |
| Lanús | 58735 | 446779 | 146283 | 0.13146321 |
| La Plata | 66933 | 648659 | 219519 | 0.10318673 |
| Lomas de Zamora | 74576 | 577997 | 178074 | 0.12902489 |
| Malvinas Argentinas | 52776 | 322373 | 89337 | 0.16371098 |
| Marcos Paz | 4006 | 47933 | 13507 | 0.08357499 |
| Merlo | 54537 | 528450 | 147702 | 0.10320182 |
| Moreno | 37102 | 445305 | 121914 | 0.08331818 |
| Morón | 44586 | 316061 | 105742 | 0.14106771 |
| Pilar | 36745 | 291136 | 80348 | 0.12621249 |
| Presidente Perón | 10217 | 80576 | 21232 | 0.12679954 |
| Quilmes | 71559 | 567929 | 172662 | 0.12599990 |
| San Fernando | 16910 | 155795 | 47223 | 0.10854007 |
| San Isidro | 47764 | 283677 | 93891 | 0.16837460 |
| San Miguel | 29663 | 274599 | 80150 | 0.10802297 |
| San Vicente | 7843 | 57413 | 16497 | 0.13660669 |
| Tigre | 53486 | 349795 | 100973 | 0.15290670 |
| Tres de Febrero | 54178 | 327915 | 108964 | 0.16521965 |
| Vicente López | 46647 | 267483 | 98405 | 0.17439239 |
Matriz de Correlación Versión de www.khstats.com/blog/corr-plots
# tomado de https://www.khstats.com/blog/corr-plots/
cors <- function(df) {
M <- Hmisc::rcorr(as.matrix(df))
Mdf <- map(M, ~data.frame(.x))
return(Mdf)
}
formatted_cors <- function(df){
cors(df) %>%
map(~rownames_to_column(.x, var = "variable1")) %>%
map(~pivot_longer(.x, cols = -variable1, names_to = "variable2", values_to = "value")) %>%
bind_rows(.id = "id") %>%
pivot_wider(names_from = id, values_from = value) %>%
rename(p = P) %>%
mutate(sig_p = ifelse(p < .05, T, F),
p_if_sig = ifelse(sig_p, p, NA),
r_if_sig = ifelse(sig_p, r, NA))
}
formatted_cors(df[, 6:16]) |>
ggplot( aes(variable1, variable2, fill=r, label=round(r_if_sig,2))) +
geom_tile() +
labs(x = NULL, y = NULL, fill = "Correlaciones\nde Pearson", title="Correlaciones",
subtitle="Solo muestra coeficientes de correlacion significativos") +
scale_fill_gradient2(mid="#FBFEF9",low="#A63446",high="#0C6291", limits=c(-1,1)) +
geom_text() +
theme_classic() +
scale_x_discrete(expand=c(0,0)) +
scale_y_discrete(expand=c(0,0)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))## Warning: Removed 11 rows containing missing values (`geom_text()`).
matriz <- Hmisc::rcorr(as.matrix(df[, 6:16]))
data.frame(matriz$r) |>
gt() |>
tab_options(table.width = "75%") |>
gt_theme_538()| Cantidad_trabajadores | Cantidad_trabajadores_Hombres | Cantidad_trabajadores_Mujeres | Remuneracion_media | Remuneracion_media_Hombres | Remuneracion_media_Mujeres | Remuneracion_mediana | Remuneracion_mediana_Hombres | Remuneracion_mediana_Mujeres | Poblacion_radio | Viviendas_radio |
|---|---|---|---|---|---|---|---|---|---|---|
| 1.000000000 | 0.90030209 | 0.943461819 | -0.009317716 | -0.007106054 | -0.006322121 | -0.02485194 | -0.01981702 | -0.03567264 | 0.03289139 | 0.10883423 |
| 0.900302094 | 1.00000000 | 0.712889231 | -0.014169283 | -0.010488791 | -0.011715257 | -0.02878699 | -0.02464643 | -0.03998330 | 0.07508706 | 0.13178945 |
| 0.943461819 | 0.71288923 | 1.000000000 | -0.008716474 | -0.011393070 | -0.006155427 | -0.02782305 | -0.02052311 | -0.03455699 | 0.01884518 | 0.08198418 |
| -0.009317716 | -0.01416928 | -0.008716474 | 1.000000000 | 0.927765605 | 0.541965963 | 0.96621270 | 0.91005245 | 0.53085830 | -0.04431850 | 0.02293731 |
| -0.007106054 | -0.01048879 | -0.011393070 | 0.927765605 | 1.000000000 | 0.072181232 | 0.85621566 | 0.98120277 | 0.06920227 | -0.03936344 | 0.02106968 |
| -0.006322121 | -0.01171526 | -0.006155427 | 0.541965963 | 0.072181232 | 1.000000000 | 0.54736480 | 0.06491454 | 0.97549425 | -0.07423886 | 0.04420998 |
| -0.024851938 | -0.02878699 | -0.027823053 | 0.966212701 | 0.856215656 | 0.547364797 | 1.00000000 | 0.87147038 | 0.55898194 | -0.04101451 | 0.01457066 |
| -0.019817016 | -0.02464643 | -0.020523111 | 0.910052450 | 0.981202773 | 0.064914540 | 0.87147038 | 1.00000000 | 0.06362749 | -0.03712264 | 0.01506084 |
| -0.035672637 | -0.03998330 | -0.034556987 | 0.530858304 | 0.069202271 | 0.975494246 | 0.55898194 | 0.06362749 | 1.00000000 | -0.06980282 | 0.03608907 |
| 0.032891394 | 0.07508706 | 0.018845175 | -0.044318499 | -0.039363439 | -0.074238857 | -0.04101451 | -0.03712264 | -0.06980282 | 1.00000000 | 0.61869789 |
| 0.108834228 | 0.13178945 | 0.081984178 | 0.022937314 | 0.021069682 | 0.044209985 | 0.01457066 | 0.01506084 | 0.03608907 | 0.61869789 | 1.00000000 |
# Matriz de correlación#
# https://blog.hasanbul.li/2018/01/14/exporting-correlation-plots/
matriz_cor <- cor(df[, 6:16], use = "complete.obs")
matriz_cor## Cantidad_trabajadores
## Cantidad_trabajadores 1.00000000
## Cantidad_trabajadores_Hombres 0.90344701
## Cantidad_trabajadores_Mujeres 0.94464444
## Remuneracion_media -0.01822649
## Remuneracion_media_Hombres -0.01264479
## Remuneracion_media_Mujeres -0.01147932
## Remuneracion_mediana -0.03538164
## Remuneracion_mediana_Hombres -0.02552626
## Remuneracion_mediana_Mujeres -0.04452308
## Poblacion_radio 0.03789523
## Viviendas_radio 0.11142396
## Cantidad_trabajadores_Hombres
## Cantidad_trabajadores 0.90344701
## Cantidad_trabajadores_Hombres 1.00000000
## Cantidad_trabajadores_Mujeres 0.71288923
## Remuneracion_media -0.01245247
## Remuneracion_media_Hombres -0.01217047
## Remuneracion_media_Mujeres -0.01171526
## Remuneracion_mediana -0.03199080
## Remuneracion_mediana_Hombres -0.02776594
## Remuneracion_mediana_Mujeres -0.03998330
## Poblacion_radio 0.07715698
## Viviendas_radio 0.13817640
## Cantidad_trabajadores_Mujeres Remuneracion_media
## Cantidad_trabajadores 0.944644444 -0.01822649
## Cantidad_trabajadores_Hombres 0.712889231 -0.01245247
## Cantidad_trabajadores_Mujeres 1.000000000 -0.02032561
## Remuneracion_media -0.020325608 1.00000000
## Remuneracion_media_Hombres -0.011393070 0.91879542
## Remuneracion_media_Mujeres -0.009908102 0.36403279
## Remuneracion_mediana -0.033394307 0.83981265
## Remuneracion_mediana_Hombres -0.020523111 0.86628908
## Remuneracion_mediana_Mujeres -0.042310702 0.34589765
## Poblacion_radio 0.003281940 -0.06258563
## Viviendas_radio 0.076097630 0.04294364
## Remuneracion_media_Hombres
## Cantidad_trabajadores -0.01264479
## Cantidad_trabajadores_Hombres -0.01217047
## Cantidad_trabajadores_Mujeres -0.01139307
## Remuneracion_media 0.91879542
## Remuneracion_media_Hombres 1.00000000
## Remuneracion_media_Mujeres 0.07218123
## Remuneracion_mediana 0.73781277
## Remuneracion_mediana_Hombres 0.97004769
## Remuneracion_mediana_Mujeres 0.06920227
## Poblacion_radio -0.03680286
## Viviendas_radio 0.02651878
## Remuneracion_media_Mujeres Remuneracion_mediana
## Cantidad_trabajadores -0.011479322 -0.03538164
## Cantidad_trabajadores_Hombres -0.011715257 -0.03199080
## Cantidad_trabajadores_Mujeres -0.009908102 -0.03339431
## Remuneracion_media 0.364032792 0.83981265
## Remuneracion_media_Hombres 0.072181232 0.73781277
## Remuneracion_media_Mujeres 1.000000000 0.32444931
## Remuneracion_mediana 0.324449314 1.00000000
## Remuneracion_mediana_Hombres 0.064914540 0.75543500
## Remuneracion_mediana_Mujeres 0.962097235 0.33337295
## Poblacion_radio -0.082160870 -0.05601086
## Viviendas_radio 0.050343451 0.02373897
## Remuneracion_mediana_Hombres
## Cantidad_trabajadores -0.02552626
## Cantidad_trabajadores_Hombres -0.02776594
## Cantidad_trabajadores_Mujeres -0.02052311
## Remuneracion_media 0.86628908
## Remuneracion_media_Hombres 0.97004769
## Remuneracion_media_Mujeres 0.06491454
## Remuneracion_mediana 0.75543500
## Remuneracion_mediana_Hombres 1.00000000
## Remuneracion_mediana_Mujeres 0.06362749
## Poblacion_radio -0.03294995
## Viviendas_radio 0.01716597
## Remuneracion_mediana_Mujeres Poblacion_radio
## Cantidad_trabajadores -0.04452308 0.03789523
## Cantidad_trabajadores_Hombres -0.03998330 0.07715698
## Cantidad_trabajadores_Mujeres -0.04231070 0.00328194
## Remuneracion_media 0.34589765 -0.06258563
## Remuneracion_media_Hombres 0.06920227 -0.03680286
## Remuneracion_media_Mujeres 0.96209723 -0.08216087
## Remuneracion_mediana 0.33337295 -0.05601086
## Remuneracion_mediana_Hombres 0.06362749 -0.03294995
## Remuneracion_mediana_Mujeres 1.00000000 -0.07470748
## Poblacion_radio -0.07470748 1.00000000
## Viviendas_radio 0.04039685 0.56613566
## Viviendas_radio
## Cantidad_trabajadores 0.11142396
## Cantidad_trabajadores_Hombres 0.13817640
## Cantidad_trabajadores_Mujeres 0.07609763
## Remuneracion_media 0.04294364
## Remuneracion_media_Hombres 0.02651878
## Remuneracion_media_Mujeres 0.05034345
## Remuneracion_mediana 0.02373897
## Remuneracion_mediana_Hombres 0.01716597
## Remuneracion_mediana_Mujeres 0.04039685
## Poblacion_radio 0.56613566
## Viviendas_radio 1.00000000
# Gráfico de correlación
# https://www.khstats.com/blog/corr-plots/
# https://bookdown.org/ndphillips/YaRrr/saving-plots-to-a-file-with-pdf-jpeg-and-png.html
# https://copyprogramming.com/howto/how-to-save-a-plot-created-by-corrplot-function-in-r
# png(height=800, width=800, file="grafico_correlacion.png")
corrplot(
matriz_cor,
method = "color", # Colores para representar la correlación
type = "lower", # Tipo de gráfico (triangular inferior)
tl.col = "black", # Color variables
tl.srt = 45, # Ángulo de rotación de las etiquetas
addCoef.col = "black", # Color coeficientes
mar=c(1,1,1,1), # Márgenes
tl.cex = 0.6, # Tamaño de letra variables
number.cex = 0.55, # Tamaño de letra coeficientes
cl.cex = 0.6 # Tamaño de letra leyenda
# diag = FALSE # Diagonal
)## Cantidad_trabajadores
## Cantidad_trabajadores 1.00000000
## Cantidad_trabajadores_Hombres 0.90344701
## Cantidad_trabajadores_Mujeres 0.94464444
## Remuneracion_media -0.01822649
## Remuneracion_media_Hombres -0.01264479
## Remuneracion_media_Mujeres -0.01147932
## Remuneracion_mediana -0.03538164
## Remuneracion_mediana_Hombres -0.02552626
## Remuneracion_mediana_Mujeres -0.04452308
## Poblacion_radio 0.03789523
## Viviendas_radio 0.11142396
## Cantidad_trabajadores_Hombres
## Cantidad_trabajadores 0.90344701
## Cantidad_trabajadores_Hombres 1.00000000
## Cantidad_trabajadores_Mujeres 0.71288923
## Remuneracion_media -0.01245247
## Remuneracion_media_Hombres -0.01217047
## Remuneracion_media_Mujeres -0.01171526
## Remuneracion_mediana -0.03199080
## Remuneracion_mediana_Hombres -0.02776594
## Remuneracion_mediana_Mujeres -0.03998330
## Poblacion_radio 0.07715698
## Viviendas_radio 0.13817640
## Cantidad_trabajadores_Mujeres Remuneracion_media
## Cantidad_trabajadores 0.944644444 -0.01822649
## Cantidad_trabajadores_Hombres 0.712889231 -0.01245247
## Cantidad_trabajadores_Mujeres 1.000000000 -0.02032561
## Remuneracion_media -0.020325608 1.00000000
## Remuneracion_media_Hombres -0.011393070 0.91879542
## Remuneracion_media_Mujeres -0.009908102 0.36403279
## Remuneracion_mediana -0.033394307 0.83981265
## Remuneracion_mediana_Hombres -0.020523111 0.86628908
## Remuneracion_mediana_Mujeres -0.042310702 0.34589765
## Poblacion_radio 0.003281940 -0.06258563
## Viviendas_radio 0.076097630 0.04294364
## Remuneracion_media_Hombres
## Cantidad_trabajadores -0.01264479
## Cantidad_trabajadores_Hombres -0.01217047
## Cantidad_trabajadores_Mujeres -0.01139307
## Remuneracion_media 0.91879542
## Remuneracion_media_Hombres 1.00000000
## Remuneracion_media_Mujeres 0.07218123
## Remuneracion_mediana 0.73781277
## Remuneracion_mediana_Hombres 0.97004769
## Remuneracion_mediana_Mujeres 0.06920227
## Poblacion_radio -0.03680286
## Viviendas_radio 0.02651878
## Remuneracion_media_Mujeres Remuneracion_mediana
## Cantidad_trabajadores -0.011479322 -0.03538164
## Cantidad_trabajadores_Hombres -0.011715257 -0.03199080
## Cantidad_trabajadores_Mujeres -0.009908102 -0.03339431
## Remuneracion_media 0.364032792 0.83981265
## Remuneracion_media_Hombres 0.072181232 0.73781277
## Remuneracion_media_Mujeres 1.000000000 0.32444931
## Remuneracion_mediana 0.324449314 1.00000000
## Remuneracion_mediana_Hombres 0.064914540 0.75543500
## Remuneracion_mediana_Mujeres 0.962097235 0.33337295
## Poblacion_radio -0.082160870 -0.05601086
## Viviendas_radio 0.050343451 0.02373897
## Remuneracion_mediana_Hombres
## Cantidad_trabajadores -0.02552626
## Cantidad_trabajadores_Hombres -0.02776594
## Cantidad_trabajadores_Mujeres -0.02052311
## Remuneracion_media 0.86628908
## Remuneracion_media_Hombres 0.97004769
## Remuneracion_media_Mujeres 0.06491454
## Remuneracion_mediana 0.75543500
## Remuneracion_mediana_Hombres 1.00000000
## Remuneracion_mediana_Mujeres 0.06362749
## Poblacion_radio -0.03294995
## Viviendas_radio 0.01716597
## Remuneracion_mediana_Mujeres Poblacion_radio
## Cantidad_trabajadores -0.04452308 0.03789523
## Cantidad_trabajadores_Hombres -0.03998330 0.07715698
## Cantidad_trabajadores_Mujeres -0.04231070 0.00328194
## Remuneracion_media 0.34589765 -0.06258563
## Remuneracion_media_Hombres 0.06920227 -0.03680286
## Remuneracion_media_Mujeres 0.96209723 -0.08216087
## Remuneracion_mediana 0.33337295 -0.05601086
## Remuneracion_mediana_Hombres 0.06362749 -0.03294995
## Remuneracion_mediana_Mujeres 1.00000000 -0.07470748
## Poblacion_radio -0.07470748 1.00000000
## Viviendas_radio 0.04039685 0.56613566
## Viviendas_radio
## Cantidad_trabajadores 0.11142396
## Cantidad_trabajadores_Hombres 0.13817640
## Cantidad_trabajadores_Mujeres 0.07609763
## Remuneracion_media 0.04294364
## Remuneracion_media_Hombres 0.02651878
## Remuneracion_media_Mujeres 0.05034345
## Remuneracion_mediana 0.02373897
## Remuneracion_mediana_Hombres 0.01716597
## Remuneracion_mediana_Mujeres 0.04039685
## Poblacion_radio 0.56613566
## Viviendas_radio 1.00000000
## LINK provincia_id departamento_id Cantidad_trabajadores
## Length:13882 Min. :2.00 Min. :2007 Min. : 11.0
## Class :character 1st Qu.:6.00 1st Qu.:6028 1st Qu.: 89.0
## Mode :character Median :6.00 Median :6427 Median :151.0
## Mean :5.03 Mean :5398 Mean :162.8
## 3rd Qu.:6.00 3rd Qu.:6539 3rd Qu.:222.0
## Max. :6.00 Max. :6861 Max. :892.0
##
## Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media
## Min. : 2.00 Min. : 1.00 Min. : 44249
## 1st Qu.: 50.00 1st Qu.: 36.00 1st Qu.: 97413
## Median : 86.00 Median : 62.00 Median : 112606
## Mean : 92.03 Mean : 70.67 Mean : 122533
## 3rd Qu.:126.00 3rd Qu.: 97.00 3rd Qu.: 135412
## Max. :635.00 Max. :366.00 Max. :1737000
## NA's :3
## Remuneracion_media_Hombres Remuneracion_media_Mujeres Remuneracion_mediana
## Min. : 42295 Min. : 5012 Min. : 35486
## 1st Qu.: 101507 1st Qu.: 88838 1st Qu.: 83980
## Median : 120134 Median : 102642 Median : 92402
## Mean : 134169 Mean : 108783 Mean : 94760
## 3rd Qu.: 148888 3rd Qu.: 121796 3rd Qu.:103205
## Max. :2881091 Max. :1104929 Max. :336937
## NA's :3
## Remuneracion_mediana_Hombres Remuneracion_mediana_Mujeres Poblacion_radio
## Min. : 34330 Min. : 5012 Min. : 53
## 1st Qu.: 86654 1st Qu.: 78164 1st Qu.: 723
## Median : 97136 Median : 87405 Median : 927
## Mean :101037 Mean : 88956 Mean :1002
## 3rd Qu.:111193 3rd Qu.: 98284 3rd Qu.:1207
## Max. :399332 Max. :317091 Max. :5895
## NA's :3
## Viviendas_radio
## Min. : 12.0
## 1st Qu.: 259.0
## Median : 324.0
## Mean : 337.7
## 3rd Qu.: 399.0
## Max. :1405.0
##
## LINK provincia_id departamento_id letra
## Length:209544 Min. :2.000 Min. :2007 Length:209544
## Class :character 1st Qu.:2.000 1st Qu.:2098 Class :character
## Mode :character Median :6.000 Median :6427 Mode :character
## Mean :4.893 Mean :5249
## 3rd Qu.:6.000 3rd Qu.:6539
## Max. :6.000 Max. :6861
##
## Cantidad_trabajadores Cantidad_trabajadores_Hombres
## Min. : 1.00 Min. : 1.000
## 1st Qu.: 2.00 1st Qu.: 2.000
## Median : 6.00 Median : 4.000
## Mean : 10.78 Mean : 6.736
## 3rd Qu.: 14.00 3rd Qu.: 9.000
## Max. :275.00 Max. :273.000
## NA's :19984
## Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres
## Min. : 1.00 Min. : 0 Min. : 0
## 1st Qu.: 1.00 1st Qu.: 77459 1st Qu.: 78267
## Median : 3.00 Median : 107655 Median : 112167
## Mean : 6.13 Mean : 132967 Mean : 143797
## 3rd Qu.: 8.00 3rd Qu.: 150981 3rd Qu.: 162879
## Max. :134.00 Max. :82039675 Max. :102996268
## NA's :49599 NA's :19984
## Remuneracion_media_Mujeres Remuneracion_mediana Remuneracion_mediana_Hombres
## Min. : 0 Min. : 0 Min. : 0
## 1st Qu.: 68040 1st Qu.: 71474 1st Qu.: 73066
## Median : 95855 Median : 95692 Median : 101181
## Mean : 114505 Mean : 116607 Mean : 127568
## 3rd Qu.: 133844 3rd Qu.: 132665 3rd Qu.: 145615
## Max. :13910144 Max. :82039675 Max. :102996268
## NA's :49599 NA's :19984
## Remuneracion_mediana_Mujeres Poblacion_radio Viviendas_radio
## Min. : 0 Min. : 53 Min. : 12.0
## 1st Qu.: 63243 1st Qu.: 734 1st Qu.: 267.0
## Median : 88164 Median : 930 Median : 332.0
## Mean : 104658 Mean :1010 Mean : 346.5
## 3rd Qu.: 122606 3rd Qu.:1210 3rd Qu.: 406.0
## Max. :13910144 Max. :5895 Max. :1405.0
## NA's :49599
## provincia_id departamento_id Cantidad_trabajadores
## Min. :2.000 Min. :2007 Min. : 2158
## 1st Qu.:2.000 1st Qu.:2094 1st Qu.: 23942
## Median :6.000 Median :6274 Median : 47764
## Mean :4.824 Mean :5156 Mean : 44322
## 3rd Qu.:6.000 3rd Qu.:6532 3rd Qu.: 58491
## Max. :6.000 Max. :6861 Max. :186525
## Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media
## Min. : 1196 Min. : 962 Min. : 91772
## 1st Qu.: 14539 1st Qu.: 8796 1st Qu.:105679
## Median : 24875 Median :21194 Median :112432
## Mean : 25050 Mean :19232 Mean :121521
## 3rd Qu.: 31847 3rd Qu.:27712 3rd Qu.:131369
## Max. :114897 Max. :71563 Max. :195682
## Remuneracion_media_Hombres Remuneracion_media_Mujeres Poblacion_depto
## Min. : 94530 Min. : 86203 Min. : 11550
## 1st Qu.:110440 1st Qu.: 94513 1st Qu.: 159503
## Median :121610 Median :102425 Median : 200608
## Mean :131789 Mean :108647 Mean : 272792
## 3rd Qu.:145021 3rd Qu.:116506 3rd Qu.: 323904
## Max. :227483 Max. :162044 Max. :1660511
## Viviendas_depto
## Min. : 3616
## 1st Qu.: 53210
## Median : 88431
## Mean : 91931
## 3rd Qu.:107639
## Max. :455650
hist(empleo$Remuneracion_media_Hombres, breaks = 1000,
col='blue',
main='histograma salario_medio',
xlab='salario',
ylab='Frequency')empleo_means <- aggregate(df_x_depto$Remuneracion_media,
list(df_x_depto$departamento_id),
mean)
empleo_means## Group.1 x
## 1 2007 220244.6
## 2 2014 231086.4
## 3 2021 143351.4
## 4 2028 127451.3
## 5 2035 164250.8
## 6 2042 181369.7
## 7 2049 161704.8
## 8 2056 127184.1
## 9 2063 133346.5
## 10 2070 144563.3
## 11 2077 170837.4
## 12 2084 189708.9
## 13 2091 212426.5
## 14 2098 227672.0
## 15 2105 159120.1
## 16 6028 129579.8
## 17 6035 127169.6
## 18 6091 118191.6
## 19 6098 119317.7
## 20 6119 104012.2
## 21 6134 115525.3
## 22 6245 133112.7
## 23 6252 138139.4
## 24 6260 126502.2
## 25 6270 116159.6
## 26 6274 111168.2
## 27 6329 118318.1
## 28 6364 117430.1
## 29 6371 124587.4
## 30 6408 131168.3
## 31 6410 139701.5
## 32 6412 110892.5
## 33 6427 119087.5
## 34 6434 138282.0
## 35 6441 118501.7
## 36 6490 133550.1
## 37 6515 114154.7
## 38 6525 108864.0
## 39 6539 119108.2
## 40 6560 112798.8
## 41 6568 143700.7
## 42 6638 155901.6
## 43 6648 103021.4
## 44 6658 134375.8
## 45 6749 141591.2
## 46 6756 176561.0
## 47 6760 139981.1
## 48 6778 121461.2
## 49 6805 150948.5
## 50 6840 139078.5
## 51 6861 172470.3
filtrado <- df_x_depto|>
filter(Remuneracion_media_Hombres < 3000000, Remuneracion_media_Mujeres < 2000000)ggplot(filtrado, aes(Remuneracion_media_Hombres,
Remuneracion_media_Mujeres)
) + geom_point(aes(col=departamento_id), size=2)filtrado2 <- df_x_depto|>
filter(Remuneracion_media_Hombres < 500000, Remuneracion_media_Mujeres < 500000)ggplot(filtrado2, aes(Remuneracion_media_Hombres,
Remuneracion_media_Mujeres)
) + geom_point(aes(col=departamento_id), size=1)#boxplots comparados
boxplot(filtrado2$Remuneracion_media_Mujeres ~ filtrado2$departamento_id,
col = 1:3)
points(x = 1:nrow(empleo_means),
y = empleo_means$x,
pch = 16,
col = "white")
text(x = 1:nrow(empleo_means),
y = empleo_means$x + 1.2,
labels = round(empleo_means$x, 2),
col = "white")plot(df_x_depto$Remuneracion_media_Hombres, df_x_depto$Remuneracion_media_Mujeres,
col='steelblue',
main='Scatterplot',
xlab='Media hombres',
ylab='Media mujeres',
pch=19)table(empleoCluster2$cluster, filtrado$departamento_id)
clusplot(filtrado, empleoCluster2$cluster, color=T, shade=T, labels=0, lines=0)# Para abordar estos warnings, podrías considerar ajustar el número de centroides
# que estás probando (center) o modificar otros parámetros del algoritmo k-means,
# como nstart, que controla el número de inicializaciones aleatorias que se ejecutan
# para encontrar el mejor resultado. También podrías evaluar la estructura de tus
# datos para determinar si el número de centroides elegido tiene sentido desde
# un punto de vista de negocio o análisis de datos.
tot.withinss <- vector(mode="character", length=10)
for (i in 1:15){
empleoCluster <- kmeans(filtrado[,9:10], center=i, nstart=20)
tot.withinss[i] <- empleoCluster$tot.withinss
}xyplot(Remuneracion_media_Hombres ~ Remuneracion_media_Mujeres,
data = filtrado,
type = c("p", "g", "smooth"),
xlab = "Remuneracion_media_Hombres",
ylab = "Remuneracion_media_Mujeres)")xyplot(Remuneracion_media_Hombres ~ Remuneracion_media_Mujeres | departamento_id,
group = departamento_id,
data = filtrado,
auto.key = TRUE,
type = c("p", "smooth"),
scales= "free")set.seed(001)
filtrado <- filtrado[complete.cases(filtrado), ]
intrain <- createDataPartition(y = filtrado$departamento_id,
p = 0.7, list = FALSE)